自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vector迭代器失效

当删除元素后,pos位置之后的元素会往前搬移,没有导致底层空间改变。原因:迭代器指向初始空间的首元素,尾插元素时空间不足,开辟更大的新空间存储元素,释放旧空间,但此时it仍旧指向已经释放的旧空间,成为了野指针。后面对野指针解引用就会导致程序崩溃。但是,如果pos元素刚好是最后一个元素,删完后pos就刚好是end()的位置,而end()位置并没有元素,那么一旦试图解引用迫使就会崩溃,类似数组访问越界。解决办法简单粗暴:在所有可能导致迭代器哦失效的操作之后,如果要使用迭代器,在使用前重新赋值,使其指向新空间。

2024-06-13 22:09:58 266

原创 (C++)string模拟实现

为防止new失败,所以使用临时变量tmp指向new出来的空间,若new成功,释放旧空间,并将—_str指向新的空间。通过reserve类似扩容的操作,扩大了字符串长度的空间,并且在原字符串‘\0’的位置上拷贝str字符串。const只能调用const,非const既可以调用非const,也可以调用const。注意:将char*传给const char*是范围缩小,因此只能1:1构造一个。内置类型,调用默认成员函数,自定义类型调用默认构造。浅拷贝(值拷贝):拷贝一个指针,指向同一片空间。

2024-06-10 11:20:49 410

原创 gdb调试常见指令

until/ until 指定行号:跳转至指定行。不带行号和next差不多,如果当前处于循环函数之中,则运行到循环函数为止;display:a &a 使用一次print命令只会打印一次变量的值,使用一次display会多次打印该变量的值。continue:c 当程序在某一断点处停止后,用该指令可以据徐执行,直至遇到断点或者程序结束为止。disable/enable 断电编号:使能(关闭,打开)断点。list/l:l 文件名:行号/函数名,l 行号/函数名。b:b 文件名:行号/函数名,b 行号/函数名。

2024-06-03 20:49:00 229

原创 C++流插入和流提取重载

但ostream是库的,不能随便修改。

2024-05-31 20:31:21 213

原创 vim操作手册

n+shift+x=X:删除光标之前的一个字符,可以一次删除n个 一行内。n+p:粘贴,当前光标的下一行 n:表示把指定内容粘贴n次。ctrl+v,hjkl区域选择,j,shift+i=I //esc*2。n+x:删除光标后续的一个字符,可以一次删除n个 一行内。n+r:对光标指定的位置,进行一个字符的替换,可以一次替换多个。n+yy:复制当前行 n:连续复制n行。n+shift+g=nG:将光标定位到整个文本的任意一行。

2024-05-26 09:26:39 340

原创 内存管理之new和malloc

new会调用operator new函数,申请足够的内存(通常底层使用malloc实现)。然后调用类型的构造函数,初始化成员变量,最后返回自定义类型指针。delete先调用析构函数,然后调用operator delete函数释放内存(通常底层使用free实现)。malloc/free是库函数,只能动态的申请和释放内存,无法强制要求其做自定义类型对象构造和析构工作。特性分析使用char*p=new char[100]申请一段内存,然后使用delete p释放,有什么问题?

2024-05-22 15:29:44 452

原创 修饰符 格式说明

md 以宽度为m输出整型数,不足m时,左边补空格。%0md 以宽度m输出整型数,不足m时,左边补零。%m.nf 以宽度为m输出实型小数,小数位为n位。

2024-05-22 10:37:01 62

原创 累加求和用内部类的方法

(1)构造函数:对自定义类型调用它的默认构造,new开辟了几个空间就会调用几次默认构造。(3)内部类是外部类的友元类,可以随意调用外部类的私有变量。(2)静态变量在静态区,所有函数共用一个静态变量。求:1+2+3+...+n。利用了C++的几个性质。

2024-05-19 22:04:52 138

原创 C++类和对象(下)

将const修饰的"成员函数"称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。内部类就是外部类的友元类,参见友元类的定义,内部类可以通过外部类的对象来访问外部类的所有成员。但外部类不是内部类的友元类。友元类,实际上就是把这个类定义为另一个类的友元类(即A类是B类的友元,A可以访问B中的私有成员变量以及保护成员变量)(4)内部类就是外部类的友元类(内部类:如果一个类定义在另一个类的内部,这个内部类就叫做内部类)

2024-05-15 10:45:51 576

原创 赋值运算符重载

我们直接将这个运算符重载函数写到类里面报错显示operator的参数太多,因为operator>作为成员函数的第一个参数默认会传给this指针。

2024-05-09 15:42:48 912

原创 类和对象C++

class为定义类的关键字,Classname为类的名字,{}中为类的主体,注意类定义结束时后面的分号不能省略。类体中内容称为类的成员:类中变量称为类的属性或成员变量‘类中的函数称为类的方法或者成员函数。// 类体:由成员函数和成员变量组成// 一定要注意后面的分号1.声明和定义全部放在类体中,需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。2.声明在.h文件中,类的定义放在.cpp文件中。

2024-05-08 15:13:16 1018

原创 Linux 基本知识(2)

4.创建一个空文件 >file &&清空一个文件 >file。2.本来应该显示到显示器上的数据,显示到文件中。command >> filename:追加重定向。command > filename:输出重定向。command < filename:输入重定向。">>"(追加重定向):不是在开始时写入。cat 默认是输出从键盘文件中输出文件。">"(输出重定向):1.创建文件。echo:向显示器文件进行写入。|(管道):管道可以集连多条命令。tail:提取文件的尾部。head:提取文件的头部。

2024-04-30 21:18:31 105 1

原创 Linux基本知识(1)

目录:src直接拷贝到这个目录下了,拷贝目录要加-rf。1.指令本质都是程序 --- 指令、程序、可执行程序都是一回事 指令就是程序。(1).mv:将指定的目录下的文件或者目录,"剪切"到指定的目录下。cat code.c #本质是显示文件内容,上面是显示文件属性。4.alias 也是一个Linux命令,给其他命令起一个别名!(2).不仅仅要剪切,还要在剪切的同时,顺便进行一下重命名。3.任何一个用户,首次登陆,所处的路径都是自己的家目录。(3).在指定目录下,对一个文件或者目录进行重命名。

2024-04-30 08:34:58 83 1

原创 linux基本指令

"..":用来表示上级路径,(可以方便我们进行路径的回退,毕竟,不光能要进去,也要能出来)".":用来表示 当前路径,(可以方便我们找到当前目录下的一个文件(可执行文件)两个路径分隔符之间一定是一个文件夹,在最后一个分割符的末尾一定是一个文件。mkdir+空格:在当前路径下,创建一个新的文件夹。touch:在当前目录下,创建一个新的普通文件。在linux中以“.”开头的文件叫做隐藏文件。linux 的任何目录下都有两个隐藏目录。/:linux的路径分割符。ls:查找当前路径下的文件。pwd:查找当前路径。

2024-04-24 15:01:24 80

原创 命名空间和函数重载

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}。int val;

2024-04-23 19:53:02 196

原创 归并排序和计数排序

归并排序(Merge sort)是建立在归并操作上的一种有效的。

2024-04-17 10:24:40 284 1

原创 交换排序(冒泡和快排)

交换排序:基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。冒泡排序:基本思想:通过相邻数字两两交换来找出最大(最小)的数字放到合适的位置上。快速排序的单趟排序是以一个数作为基准值,实现将数组中比基准数小的数放在基准值的左侧,比基准值大的数放在基准值的右侧。

2024-04-13 13:03:34 206

原创 选择排序与堆排序

堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是通过堆来进行选择数据。1.1 基本思想:选择排序是通过遍历数组,不断找出数组的最大值和最小值放到两端,直到排序结束。1.时间复杂度:O(0.5*N^2)时间复杂度:O(N*logN)2.空间复杂度:O(1)空间复杂度:O(1)

2024-04-12 16:06:14 192

原创 插入排序算法

1. 元素集合越接近有序,直接插入排序算法的时间效率越高2. 时间复杂度: O(N^2)3. 空间复杂度: O(1),它是有一种稳定的排序算法4. 稳定性:稳定。

2024-04-08 19:38:35 281

原创 随机链表的复制

思路:在每个节点后面复制一个相同的节点,然后再将复制的节点拆除下来连成一个新的链表。

2024-03-13 14:41:49 353

原创 二叉树相关概念

通常的方法是链表中每个节点由三个域组成,数据域和左右指针域,左右指针分别用来给出该节点左孩子和右孩子所在的链节点的存储地址。对于深度为K的,有n个结点的二叉树,当且仅当每个结点都与深度为K的满二叉树结点一一对应时,称为完全二叉树。* 除根节点外,其余节点被分成M个互不相交的集合,其中每一个集合又是一颗结构与树类似的子树。1.满二叉树:一个二叉树,如果每一层的节点树都达到最大值,则这个二叉树就是满二叉树。节点的祖先:从根到该节点所经分支上的所有节点。子孙:以某节点为根的子树中任一节点都称为该节点的子孙。

2024-03-12 21:54:17 794 1

原创 逆置链表的两种

第二种:是头插的方法。将所有的节点一个一个头差到空指针上,这儿的重点是刷新头插后的头newhead比较重要。指针n1和n2用来逆置指针的方向,n3用来指明方向。第一种:用三个指针来你逆置。

2024-03-06 20:44:45 305 1

原创 栈和队列的概念

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头。栈:一种特殊的线性表,其只允许在固定一端进行插入和删除元素操作。栈中的数据元素遵守后进先出的原则。队列也可以数组和链表的结构实现,使用链表结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。栈的是实现一般可以使用数组或者链表实现,相对而言数组的结构更优一些。压栈:栈的插入操作叫做进栈\入栈,入数据在栈顶。

2024-01-21 10:36:21 338

原创 顺序表和链表

线性表:是n个具有相同特性的数据元素的有限数列。线性表在逻辑上是线性结构的,也就说是连续的一条直线。但在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。顺序表是用一段物理地址连续的存储单元一次存储数据元素的线性结构,一般情况下采取数组存储。链表的每个单元是一个结构体,要想将两个结构体连接在一块,只需要将第二个结构体的地址存入第一个结构体中的指针中。链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。(物理结构上是不连续的)

2023-12-12 16:55:04 20

原创 空间复杂度

空间复杂度:是对一个算法在运行过程中临时占用存储空间大小的量度。例3:递归调用了N次,开辟了N个函数栈帧,空间复杂度为O(N)例2:动态内存开辟了N+1个额外空间,空间复杂度是O(N)例1:定义了常数个额外空间,空间复杂度为O(1)

2023-11-07 17:23:01 23

原创 时间复杂度

例5:这个函数有一个int参数,后面的没有显示,最好的情况是执行了1次,最坏的情况是执行了N的常数倍次,时间复杂度是O(N)。例6:冒泡排序的基本操作在最坏的情况下执行了N*N次,时间复杂度是O(N2)例1:这个函数的基础操作是循环,执行力2*N+10次,时间复杂度是O(N)例8:这个函数的基本操作是递归,大概递归2^N次,时间复杂度是O(2^N)例2:这个函数的基本操作执行了M+N次,时间复杂度是O(N+M)1.2 在修改后的运行次数函数中,只保留最高阶项。例9:阶乘的递归了N次,时间复杂度是O(N)

2023-11-07 16:54:22 19

原创 C语言文件操作

文件资源申请类似于动态内存申请,每个被使用的文件都在内存中开辟了一个相应的文件信息去,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束。文件在读写之前应该先打开文件,在使用文件结束之后应该关闭文件。一个文件要有一个唯一的文件标识,以便用户识别和引用。根据文件指针的位置和偏移量来定位文件指针。让文件指针的位置回到文件的起始位置。

2023-10-24 14:25:25 21

原创 有关柔性数组

所以,如果我们把结构体的内存及其他成员的内训一次行分配好了,并返回给用户一个结构体指针,用户做一次free就可以把所有的内存也给释放掉。实际上普通的局部变量是在栈区分配空间的,栈区的特点是在上面创建的变量出了作用域就销毁,但是被static修饰的变量存放在数据段(静态区),数据段的特点是在上面创建的变量直到程序结束才被销毁。包含柔性数组成员的结构用malloc()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。4、代码段:存放函数体(类成员函数和全局函数)的二进制代码。

2023-10-15 10:05:20 22 1

原创 自定义类型:结构体,枚举,联合

结构体变量声明后,可以在声明末尾定义或者在声明外面定义,很简单可以不看枚举的定义中包括枚举类型和枚举常量的设定enum Sex//枚举常量MALE,FEMALE,SECRET,enum ColorRED,GREEN,BLUE,return 0;联合也是一种特殊的自定义类型这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合体也叫共用体)。int i;

2023-10-04 21:54:33 38 3

原创 字符串和内存函数

定义:结构是一些值的集合,这些值成为成员变量。结构的每个成员可以是不同类型的变量。结构体的自引用:结构体中不能包含同类型的结构体变量,但是可以包含同类型结构体指针。offsetof 可以计算结构体成员相较于起始位置的偏移量。书:书名+作者+出版社+......类似数组:一组相同类型元素的变量。内存相关的函数(单字节处理)人:名字+年龄+身高+体重。C语言支持的自定义类型。

2023-10-03 14:55:52 31 2

原创 数据在内存中的存储

字符在内存中的存储的是字符的ASCII码值,ASCII码值是整形,所以字符类型归类到整形家族。如果是有符号数,能存储的范围是:-127~128。整形:字符类型,短整型,整形,长整型,长长整形。规则:整型提升是按照变量的类型来进行提升的。C语言中,表达式中的字符和短整型操作数在。b.如果是有符号数,则高位全补符号位;的时候会发生整型提升,变为普通整型。a.如果是无符号数,则高位直接补0;浮点型:单精度浮点数,双精度浮点数。char 占1个字节=8个bit。

2023-08-21 16:58:32 24 1

原创 扫雷小游戏

【代码】扫雷小游戏。

2023-08-13 17:56:52 25 1

原创 原反补在内存中的应用

负数:原码,反码(原码按位取反),补码(原码按位取反+1)整形提升负数高位补1,正数高位补0;实例中变量只要参加了表达式运算就会发生整形提升。有符号数:符号位+数字大小。正数:原反补码都一样。

2023-08-10 10:21:12 37 1

原创 三子棋小游戏

printf("请重新输入(ROW,COL):");printf("请输入落子坐标(ROW,COL):");printf("你真菜,竟然和电脑五五开!printf("您的输入有误!printf("你真菜,连电脑都下不过!printf("电脑落子:\n");printf("恭喜你,赢了!printf("欢迎来到三子棋游戏\n");printf("请输入您的选择:");//检查游戏是否结束。//检查游戏是否结束。

2023-07-20 21:53:01 22 1

原创 输入输出函数补充

printf函数在占位符前面加0,可以实现空白部分自动补零的功能。scanf函数的占位符前面加个数字可以限定几位。

2023-07-07 15:08:51 33

原创 【无标题】

1.讲一下格式化字符串。格式化字符串是指通过特殊的占位符,将对应的信息提取或者整合的特殊字符串。他的占位符包括%d、%f、%c、%s、%x、%p%d 替代的是十进制整数%f 替代的是浮点数(小数),%.2f 是指打印小数点后两位%c 替代的是字符,例如‘A’%s 替代的是字符串 “ writer ”%x 替代的是十六进制整数输出%p 替代的是指针输出getchar 是读入函数的一种,从键盘中读入一个字符,返回为int 类型。putchar 将键盘中读入的字符打印出来。

2023-07-04 14:59:35 19

原创 第一篇博客

我是一个研0小白,在机缘巧合下我与代码结缘。在我看来,计算机编程是一个能让人脑洞大开的世界,在这个世界人人都是创世大能,呼风唤雨,捏土造人无所不能。当然啦,我现在还是游戏开局的那个蛋,距离成为一方妖界至尊还有不小得一段距离,注定这将是一段不平坦的路。大道至简,在编程学习的路途中不求一日千里,但愿走的每一步都走的足够深刻且能够被我所记住。高山流水,细水长流,我计划每天抽出三个小时时间学习编程。但愿最终能够水到渠成。

2023-06-11 10:41:15 72 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除