- 博客(57)
- 收藏
- 关注
原创 【C++初阶】第12课—list
这里需要注意的是,为了区分前后置++,默认给后置++的形参参数为int,这里int仅做区分使用。由于前置++不需要创建临时对象,因此对比之下更高效。
2025-03-29 22:22:09
836
原创 【C++初阶】第11课—vector
注意:pos的类型是迭代器iterator,因为vector的成员变量是iterator类型,类似迭代器begin()和end()
2025-01-25 23:00:17
874
原创 【C++初阶】第10课—标准模板库STL(string的模拟实现)
string又属于basic_string,它使用的编码形式就是UTF-8的编码。
2025-01-01 17:27:04
976
原创 【C++初阶】第8课—标准模板库STL(string_2)
文章目录1. string类对象遍历操作1.1 标准库中的成员函数begin( )和end( )1.2 标准库中的成员函数rbegin( )和rend( )1.3 C++11引入的4个标准库中的成员函数2. string类对象的访问2.1 operator[ ]运算符重载访问字符串字符2.2 公有成员函数at访问字符2.3 公有成员函数back()和front()访问字符3. string类对象的修改操作3.1 运算符重载operator+=追加字符串/字符3.2 push_back尾插字符c3.3 app
2024-12-13 17:16:40
839
原创 【C++初阶】第7课—标准模版库STL(string_1)
STL(standard template library—标准模板库):是C++标准库的重要组成部分,而且它还是一个涵盖数据结构与算法的软件框架STL发展至今一共出现4个版本,原始版本、P.J.版本、RW版本、SGI版本,而我们主要学习第4个版本,它的命名风格和编程风格阅读性非常高。
2024-12-07 18:51:24
1035
原创 【C++初阶】第5课—动态内存管理
new和delete对于自定义类型,会分别调用类的默认构造和析构,这是和malloc和free最大的区别new和delete对于内置类型不会初始化。但是对于自定义类型是一定会初始化,因为它要调用默认构造,没有默认构造会报错对于类的多参数。
2024-11-30 16:15:44
863
原创 【C++初阶】第3课—类和对象(类的默认成员函数)
对于上述提到的Date类,它只有内置类型,因此编译器默认生成的拷贝构造函数就够用对于类Stack,虽然它的成员变量也都是内置类型,但是_arr指向了开辟的空间,编译器默认生成的拷贝构造函数是浅拷贝,它会将变量的地址也拷贝过去,造成后续析构函数连续释放两次同一块内存空间的资源对于类MyQueue的拷贝构造,由于Stack的拷贝构造已经显式写出,那么这里就可以不写,因为编译器默认生成的MyQueue拷贝构造也是调用Stack的拷贝构造。
2024-11-26 16:59:56
988
原创 【C++初阶】第2课—类和对象(上)
class和struct,可能大家对class比较陌生,不过struct在学习C语言和数据结构阶段应该用的比较多,没错,在C++中struct被升级为了类class和struct定义的类中都可以包含变量和函数,不过一般都是用class定义类class和struct定义的类肯定有区别,我们后面讲其中class和struct后面+类的名字,{}为类的主体,类体中的内容为类的成员,另外类结束也有;为了区分成员变量,一般习惯上在成员变量前加一个标识符_或者m_,具体情况具体分析,C++不强制。
2024-11-17 21:29:42
1026
原创 【C++初阶】第1课—初识c++
估计大家刚开始学习c++之前,都觉得这门语言忒难,可是为什么大家还是毅然决然的选择了他呢?反过来讲,既然选择了计算机这条路,那么有哪条路又是好走的,如果你感觉现在学的很吃力,那么恭喜你,说明你正在走上坡路,无数个日夜,你努力啃着晦涩难懂的代码,终究有一天,你会将他们全部弄懂,就像翁凯老师讲的“计算机里没有黑魔法,它也是人为创造出来的,只是以我们当前的学识还不能理解,但终有一天我们会全部搞懂那些曾经自以为晦涩难懂的代码”觉得计算机难学的集合了 好了,接下来进入我们今天的主题,就由我来为大家打开c++的大
2024-11-16 15:38:42
834
原创 【数据结构与算法】第12课—数据结构之归并排序
计数排序有一定的局限性,当数组中的数据差值较大时,会造成空间的极大浪费,此时计数排序便不再适用,因此它只适用于元素之间差值较小的序列。接下来我将用图示的方法来帮助大家理解。
2024-11-10 22:42:55
534
原创 【数据结构与算法】第11课—数据结构之选择排序和交换排序
首先选取待排序集合的最大(最小)的数据元素,如果最大的元素不是序列的最后一个位置,则让它与最后的元素交换;同样,最小的元素如果不再数据的起始位置,那么让它与第一个元素交换,之后继续重复上述操作待排序的数据,直到排好序。接下来我将用图示来帮助大家理解。
2024-11-10 15:53:09
1118
原创 【数据结构与算法】第8课—数据结构之二叉树(堆)
树是一种非线性的数据结构,它是由n(n>=0)个有限节点组成一个具有层次关系的集合,一般是树根朝上,树叶朝下树有一个特殊的节点,叫做根节点,根节点没有前驱节点树的根节点下面又有很多子节点,但是这些子节点是不相交的除根节点外,每棵子树的根节点有且只有一个前驱,但是可以有0个或多个后继,因此,树是递归定义的。
2024-11-02 21:13:55
902
原创 【数据结构与算法】第7课—数据结构之队列
只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表栈只允许在栈顶进行插入数据删除数据的操作,称为入栈、出栈(或压栈)队列则是队尾进队头出,满足先进先出的原则,而栈则是后进先出。
2024-10-31 19:10:01
570
原创 【数据结构与算法】第5课—数据结构之双链表
文章目录1. 链表2. 双链表2.1 初始化和打印2.2 尾插2.3 头插2.4 尾删2.5 头删2.6 指定位置pos之后插入2.7 删除指定节点2.8 销毁链表1. 链表2. 双链表2.1 初始化和打印2.2 尾插2.3 头插2.4 尾删2.5 头删2.6 指定位置pos之后插入2.7 删除指定节点2.8 销毁链表
2024-10-28 17:56:32
327
原创 【数据结构与算法】第4课—数据结构单链表OJ练习题
思路1:创建新数组,保存链表中所有节点的值,然后再判断数组是否是回文结构即可。思路2:反转链表中间节点之后的一段链表,然后对比前后两段。思路3:逆序链表,然后两个链表对比。
2024-10-26 23:51:23
588
原创 【数据结构与算法】第3课—数据结构之单链表
链表是在逻辑结构上连续,而在物理结构上不一定连续的存储结构链表由一个一个的节点组成,并且这些节点是在堆上申请空间单链表的每个节点一般有两个变量,一个变量存储数据,另一个变量里面是下一个节点的地址,最后一个节点里面的那个变量存储的是空指针。
2024-10-22 21:14:24
497
原创 C语言进阶版第21课—预处理
C语言定义了一些预定义符号,可直接使用,预定义符号也是在预处理阶段处理的__FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器支持ANCI C语法规则,那么该值是1#define定义标识符时需要在末尾加分号;吗???其中name是宏名,parament-list是宏的参数,stuff是宏体其中参数列表左边的括号必须与宏名紧挨着,中间不允许有空格简单举个例子。
2024-10-14 21:37:48
665
原创 c语言进阶版第19课—文件操作
函数作用printf针对标准输出流(stdout)的,将数据以格式化的形式输出到屏幕上scanf针对标准输入流(stdin)的,从键盘上输入格式化的数据fprintf针对所有输出流的,格式化的输出函数fscanf针对所有输入流的,格式化输入函数sprintf将格式化的数据转换成字符串sscanf从字符串中提取出格式化的数据。
2024-10-12 17:06:55
1145
原创 C语言进阶版第18课—动态内存管理
那么我们为什么要开辟动态的内存呢?因为我们可以通过动态管理内存,从而可以更好的利用有限的内存空间,很大程度上避免了内存的浪费。但是,正是由于内存通过动态管理,也会常常出现越界访问,空间占用未释放等问题,因此在使用时需特别注意 为什么free释放完动态内存后还要将p赋值NULL7. c/c++中程序内存区域划分
2024-10-08 17:50:36
653
原创 C语言进阶版第16课—自定义类型:结构体
如果结构体发生嵌套使用,那么嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处,结构体的总大小就是最大对齐数(含嵌套结构体)的整数倍。结构体总大小为最大对齐数(包括第一个成员的对齐数,所有成员中最大的对齐数)的整数倍。结构体的第一个成员对齐到和结构体变量起始位置偏移量为0的地址处。对齐数 = 编译器默认的一个对齐数和该成员变量自身大小的较小值。Linux中 gcc 没有默认对齐数,对齐数是成员本身大小。那么位段成员冒号后面的数字是什么意思呢?结构体嵌套内存对齐的规则。VS 中对齐数是 8。
2024-10-05 22:35:34
942
原创 C语言进阶版第15课—数据在内存中的存储
(-1)^S表示符号位,S等于0表示V为正数,S等于1表示V为负数。M表示有效数字,且M是大于等于1的,且小于2。指数E不全为0或不全为1。指数E取出有三种情况。
2024-10-04 20:03:45
687
原创 C语言进阶版第14课—内存函数
通常我们使用memcpy函数来处理源空间和目标空间无重叠的情况,而重叠的情况通常使用memmove函数来实现。如果想把5个元素(1,2,3,4,5)放到(3,4,5,6,7)里面去,my_memcpy能帮我们实现吗?
2024-09-30 20:11:21
833
原创 c语言进阶版第11课—指针练习
sizeof(数组名),这里的数组名是整个数组,计算的是整个数组大小&数组名,这里的数组名表示整个数组,取出的是整个数组地址除此之外所有的数组名都表示数组首元素地址。
2024-09-23 20:54:41
489
原创 C语言进阶版第10课—qsort函数排序
qsort函数一共有四个参数,该函数可用来排任意类型的数第一个参数void* base —> base中存放的是待排序数组首元素的地址(void*表示base是无符号类型的指针,用来存储不同类型数组的地址)第二个参数size_t num —> num指待排数组元素个数(size_t为无符号整形)第三个参数size_t size —> size指待排数组中每个元素的大小(单位字节)第四个参数。
2024-09-15 23:51:26
810
原创 C语言进阶版第七课—指针(1)
通过调试我们发现,函数在传参时,形参会单独创建一个地址来接收实参,因此对形参的修改也不会影响到实参。32位操作系统下指针变量大小为4个字节,64位操作系统下指针变量大小为8个字节。类型的解引用能访问4个字节,因此通过不同类型的解引用访问的字节数也不同.对比上图得知,指针变量的大小与指针变量的类型无关,而与操作系统有关。当我们把地址传过去时,形参的变化就会影响到实参中的变量。类型的解引用只能访问一个字节,
2024-09-01 17:50:25
991
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人