- 博客(15)
- 收藏
- 关注
原创 【C++】STL之stack_queue
1. 队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端 提取元素。2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的 成员函数来访问其元素。元素从队尾入队列,从队头出队列。3. 底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少支持以下操 作:empty:检测队列是否为空size:返回队列中有效元素的个数front:返回队头元素的引用back:返回队尾元素的引用。
2024-07-30 09:29:19
545
原创 【C++】模板进阶
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链 接起来形成单一的可执行文件的过程称为分离编译模式。【优点】1. 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2. 增强了代码的灵活性【缺陷】1. 模板会导致代码膨胀问题,也会导致编译时间变长2. 出现模板编译错误时,错误信息非常凌乱,不易定位错误。
2024-07-26 16:02:31
535
原创 【C++】STL——string
string作为我们最先了解的stl,我们需要很深入很全面的学习,方便以后学习其他的stl。首先我们看到string是一个类模板,经过封装之后呈现出来的。学习string我们要从使用string类、理解string类、模拟实现string类的底层。
2024-07-20 09:16:45
503
原创 【C++】STL——list
我们在数据结构初阶阶段学过了链表,list的底层正是带头双向链表,本篇博客会主要讲解list的模拟实现,并且前期在数据结构讲解过的插入删除等操作,本篇博客不会重点讲解,list的迭代器是作为重点进行讲解。
2024-07-13 15:21:44
259
原创 【C++】C&C++内存管理
int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间//还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;
2024-05-04 16:01:51
941
3
原创 【C++】类和对象之赋值运算符重载
注意:如果类中未涉及到资源管理,赋值运算符是否实现都可以;一旦涉及到资源管理则必 须要实现。区别赋值重载和拷贝构造//赋值拷贝//注意如果返回值是void类型,那么无法进行连续赋值拷贝,例如d1=d2=d3//拷贝构造1.首先返回值问题,赋值重载返回值为类的类型,拷贝构造没有返回值。2.拷贝构造:一个已经存在的对象,拷贝给另一个要创建初始化的对象赋值拷贝:一个已经存在的对象,拷贝赋值给另一个已经存在的对象public:private:int _year;
2024-05-01 10:35:58
349
原创 【C++】类和对象(中篇)
内置类型就是语言提供的数据类 型,如:int/char...,自定义类型就是我们使用class/struct/union等自己定义的类型,看看 下面的程序,就会发现编译器生成默认的构造函数会对自定类型成员_t调用的它的默认成员 函数。
2024-04-14 18:42:45
833
3
原创 【数据结构】快速排序的深入分析
由于在最坏情况时,基准值的选取总是从最小的数开始选取,导致树的高度为n,因此我们随机选取基准值,然后将选取的基准值与left互换,其他操作不变。具体分析需要用到二叉树的内容,二叉树中完全二叉树的高度为log(N+1),每层时间复杂度约为N,所以整体的时间复杂度约为O(N*logN)。快速排序Hoare版本的空间复杂度为O(logN)-O(N),一般情况为O(logN),最坏情况(序列有序时)为O(N)。如图片所示,当序列有序时二叉树没有左侧节点,只有右侧节点,高度为n,每层为n、n-1、
2024-04-08 21:41:27
266
原创 【C++】C++基础入门之引用(&)
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。比如:李逵,在家称为"铁牛",江湖上人称"黑旋风"。引用使用的基本结构:类型&对象名=引用实体注意:引用类型必须和引用实体的类型相同。
2024-04-01 20:45:17
296
2
原创 【数据结构】排序算法之快速排序(挖坑法)
情况二,如果R和L相遇,将相遇位置的数值填入坑中,相遇位置成为新的坑位,再把key填入新的坑位中。2.如果L和R相遇,将相遇位置的数值填入坑中,相遇位置成为新的坑位,再把key填入新的坑位中。与Hoare版本的思路大致相同,挖坑法就是把停下来的L或者R变成坑位,将找到的值填入坑中。1.如果L遇到比key大的数,将L位置的数填入key中,L位置成为新的坑位。情况一,如果R遇到比key小的数,挖出R位置的数填入坑中,R成为新的坑位。挖坑法的大致过程就是这样了,与Hoare版本差别不大,但是更好理解。
2024-03-31 20:32:35
208
1
原创 【数据结构】排序算法之快速排序(Hoare版)
快速排序又叫快排,在排序算法中的地位可谓是举足轻重,它是C语言中qsort函数和C++中sort函数的底层排序算法。同时作为与它同为交换排序的冒泡排序,其效率和性能与快排相差很多。本片博客会重点介绍快排的算法逻辑、效率分析以及代码和效率优化。
2024-03-30 19:53:48
389
2
原创 【C++】C++基本入门之命名空间
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。1.命名空间的一般定义方式// 命名空间中可以定义变量/函数/类型注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中int val;//2.命名空间也可以嵌套int val;int a = 10;int b = 0;//3.一个工程中可以存在多个相同名字的命名空间,编译器最终会将相同名字的命名空间归为一个int val;
2024-03-28 17:00:18
304
3
原创 第一节c语言知识点总结
printf (“i love %sman %d”,“叫什么什么”, 3);只需要在小数前面加上(int)就能用小数强制转换成整数。占位符 %d表示整数 %s表示字符串。scanf函数 将输入值放到变量。
2023-08-04 10:23:37
54
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人