- 博客(37)
- 收藏
- 关注

原创 c++初期笔记(超详细超完整)
(1) 说明:从字符串流中提取我们需要的信息,可以是各种类型的变量,和cin等价(2) 格式 ssin>>a>>b>>strint main(){string s;int a, b;double C;return 0;}(3) 库函数 sstream{Person(int_ age, int_ height, double_ _money) // 构造函数{}};} 特殊的赋值方式};
2022-12-17 23:28:17
2311
2
原创 运算符重载(重构)
在函数过程中,如果发生了数组越界,那么我们之前所构建的下标重构中会返回charnull,虽然charnull是全局区,但因为引用符号实际上对ca的某个值发生了赋值操作,修改了对象,const不允许这样的操作出现,因此带上const发生了报错。
2023-05-28 20:36:02
1023
2
原创 对象友元的概念及应用
1:+运算符为双目运算符,有左右两个参数,在类中重构时,this指针指向的对象为左参数,参数1指向右参数,this指针作为隐含的参数不需要我们在参数列表内加上他,所以在类中重构+运算符时,只有一个参数。这是因为在编译过程中,Line类作为Point的友元,虽然能够调用Point的成员,但因为Line声明定义在Point的前面,我们目前还不清楚Point类中成员都有什么,无法调用Point的成员。A认为B是他的朋友,B认为C是B的朋友,但是A如果不认识C那么A就不认为C是A的朋友。
2023-05-24 19:13:29
770
原创 log4cpp的使用
回卷文件说明:假如一次产生连续十个回卷文件,编号为1-10,要求日志文件只能占10M空间,那么每个回卷文件最大大小为1M,当日志信息填入回卷文件1且填满时,会使用回卷文件2继续写入,当10个回卷文件都填满时,会删除最早的回卷文件,重新写入数据,在当前场景下,回卷文件1是最早的一个,于是将他重定向操作,这种结构类似于队列一样,也有着先进先出的特点(再严谨一点是循环队列)打印第一列代表时间,单位为秒,第二列为优先级,第三列为模块名,root没有设置所以是空白,最后面为日志内容。我们把for循环改为1000次。
2023-05-23 19:56:13
1072
原创 C++中的三种IO形式
既然已经掌握了四种状态表示和如何重置流与清空缓冲区那么可以试着写一个专门用于输入的函数cin . eof()) //直到输入结束 {return - 1;return 0;
2023-05-18 21:06:11
484
原创 对象应用:C++字符串和vector,对象的new与delete重构
此时我们在内存检测时发现,对象本身没有被真正销毁,因此在destroy内部调用析构函数是错误的,应该直接进行delete操作,由于是在类的内部进行delete,可以访问析构函数,所以其操作是完全可行的。此时我们运行发现,在sp1->delete行出错,由此我们知道delete在销毁对象时调用了析构函数,而析构函数因为他的私有化而不可用,因此需要在public里新建一个函数用来替换delete操作。//参数1,pos,指定起始位置,参数2,len,指定长度。所占存储空间较大,40字节,数据成员一般都包含。
2023-05-09 19:35:35
1915
原创 对象应用和单例模式
1.将构造函数私有化创建的对象就既不能是栈对象,也不能是全局/静态对象,只能是堆对象(因为new/malloc出来唯一的对象可以用地址访问)public :private :"
2023-05-09 18:40:30
890
原创 C++中期:程序内存布局以及对象入门
public ://默认为public,类之外可直接访问 void pay();//protected://保护的访问权限,交给子类(派生类)访问 private ://不允许类之外访问 string id;int money;一般来说特征属性都是放在private内,行为都是放在public内。
2023-04-19 21:45:01
131
1
原创 虚拟机Ubuntu网络开机或突然断连解决方法
4.重启网络,如果要修改为静态ip则根据该图将ipv4地址,子网掩码填写255.255.255.0,网关填写路由地址填写到下方。1.打开有线连接设置。
2023-04-17 15:18:35
1137
1
原创 C++中期:深入namespace
(1).像函数一样可以直接定义} }(2)也可以定义匿名空间int num;int a;匿名空间所定义的变量或函数可以直接使用,不需要作用域限定符(3)更可以像函数或者循环一样嵌套定义int num;int num;} }其中::被称为作用域限定符。
2023-04-11 15:50:01
87
原创 dfs与bfs
从使用空间看,dfs只需记录这条路径的所有点,空间复杂度为O(h),bfs记录每层的节点,空间复杂度为O(z ^ h),该特点使bfs有了一个最短路的概念。按照字典序输出自然数 1 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。每个解决方案占 n 行,每行输出一个长度为 n 的字符串,用来表示完整的棋盘状态。从使用的数据结构来看,dfs使用的是栈,bfs使用的是队列。由 1 - n组成的所有不重复的数字序列,每行一个序列。每个方案输出完成后,输出一个空行。
2023-02-06 14:35:45
928
原创 为来蓝桥杯打算法-堆
二叉树,且是完全二叉树(即除了最后一层的节点,其他层的节点的分支都有两个,最后一层的节点从左到右排列)x下面的左节点就存储在q[2 * x],右节点就存储在q[2 * x + 1]用heap存储每一个节点,size作为元素量也是下标。因此可以得出一个规律,从根节点开始,节点设为x。最后我们可以知道一开始那些操作是如何实现的。用一维数组存储所有的节点。与down操作如出一辙。
2023-01-27 18:11:44
98
原创 KMP算法
暴力法对字符串匹配:设i作为K的下标,j作为p的下标,当K[i]与 P[0]相等时,开始匹配下个字符,否则让i++,如果连续匹配到很多个字符,但突然有一个不匹配,那么i与j都会回溯,比如K[i]和P[0]相等了,一直匹配到K[i + random],P[j + random]时匹配失败,那么i,与j都会回溯,K的下标i + random回溯到i++,j + random回溯到j = 0。s[0] == p[0],s[1] == p[1], 但是s[2]!以及求得next数组代码。例题代码(yxc做法)
2023-01-16 17:24:19
107
原创 算法基础-数据结构:栈和队列
先进后出,和一个半封闭容器类似,放了一堆肉饼,先放的肉饼后倒出来。诀窍:在while循环判断条件时,只要想该数不符合条件则跳过即可。先进先出,和枪上膛相似,先插进去的子弹先打出来。q[N]表示队列,hh表示对头,tt表示队尾。stk[n]数组代表栈,tt代表栈点。
2023-01-13 19:39:38
97
原创 算法基础:离散化
对一组序列进行升序排列,然后用0映射,代表序列的最小数,1映射第二小的数,以此类推,与利用数组存储相似。如果序列中有重复元素,应当先去重删除重复元素再排序映射。
2022-12-27 23:54:10
137
原创 算法基础:差分
则使存储前缀和的二维数组某一坐标的右下角全部改变,并使多余部分减掉,由于需改变矩阵的右下角的矩阵被减掉两次,还需要使其重新加回来,成为原本的前缀和,从而得到一个存储前缀和的矩阵中特定的小矩阵发生改变。 有一数组a,b,使得 ai = b1 + b2 + b3 + … 本质上是改变边界的值,使得中间连续值得以被间接改变。 假设要改变存储前缀和的二维数组中特定矩阵发生改变。 b就称为a的差分,a就称为b的前缀和。 与一维差分相同,也是前缀和的逆运算。 使某一区域的前缀和被同步改变,
2022-12-22 20:59:39
145
原创 算法基础:前缀和
若要求区间[l,r]之间的前缀和,则只需将r的前缀和减去l - 1的前缀和即可。 则si = a1 + a2 + … 思想:假设有原数组a1,a2,a3… 时间复杂度为O(1);
2022-12-20 16:48:44
120
原创 算法基础:轻松搞懂高精度(原理+可套用模板)
通过将大数每一位的值与B相乘,并且每次运算只把算得的个位传给C,下一次将上次除去个位的数加上这一次相乘的值,最后将留下来的未能放进C的数再放进C中,得到最终的相乘数。然后通过将余数r*10+下一位的数,得到12,12/11得到余数1,以此类推,最后得到的就是两数之商,同时也可得到最终的余数。 思想:用一个数组逆存储一个整数的值,数组下标为0的值存储个位,为1存在十位,以此类推;用int 存储一个较小数。 思想:用一个数组逆存储一个整数的值,数组下标为0的值存储个位,为1存在十位,以此类推;
2022-12-19 22:01:10
163
原创 c笔记续.
isspace 空白字符:空格’ ‘,换页’\f’,换行’\n’,回车‘\r’,制表符’t’或者垂直制表符’\v’ 1.4 传入的str不为空指针NULL,strtok将找到str的第一个标记,并保存他在字符串中的位置。 1.6 如果传入的str中有sep函数中两个至多个字符连续存在的情况,也会分隔,而不是空出一个位置。 1.5 传入的str为空指针NULL,函数将在同一个字符串中被保存的位置开始,查找下一个标记。 1.3 如果找到特定字符,会直接将原字符数组的该位置字符改为 ‘/0’
2022-12-17 23:32:22
117
原创 算法基础1:快速排序
使 = x 的数放在右半边,两边的数可以乱序,暂时不用排序。 (2)扫描 l 到 r 的所有数,将 = x的数放到b中。 (1)判断指针i所指向的数是否小于x,符合条件时往右移一位,当大于等于x时指针i停下。 (3)将a,b排序后放到q数组中 a[ ] -> q[ ], b[ ]->q[ ]; (3)将i与j指针所指向的数交换,并再次重复1,2,3,直到i,j走到中间位置。 (1)开两个额外数组a,b。
2022-12-17 23:25:13
63
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人