- 博客(54)
- 收藏
- 关注
原创 C++ map&set 小白全解:从语法到实战,看完直接上手
前面我们已经接触过STL中的部分容器如:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间一般没有紧密的关联关系,比如交换一下,他依旧是序列式容器。关联式容器也是用来存储数据的,与序列式容器不同的是,关联式容器逻辑结构通常是非线性结构,两个位置有紧密的关联关系,交换一下,他的存储结构就被破坏了。• set底层是用红黑树实现,增删查效率是 ,迭代器遍历是走的搜索树的中序,所以是有序的。
2026-07-05 16:38:10
244
1
原创 C++ 模板封装二叉搜索树
• 二叉搜索树中可以支持插入相等的值,也可以不支持插入相等的值,具体看使用场景定义,后续我们学习map/set/multimap/multiset系列容器底层就是二叉搜索树,其中map/set不支持插入相等值,multimap/multiset支持插入相等值。单 Key 类型的二叉搜索树支持新增、删除、查找操作,但不支持直接修改 Key,因为修改节点的 Key 会直接破坏二叉搜索树的有序结构。如果cur->_key > key:要插入的值更小,往左走,parent=cur,cur=cur->_left;
2026-06-14 10:49:37
231
原创 C++ 进阶:虚函数与多态原理
多态是⼀个继承关系的下的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象优惠买票。• 必须是基类的指针或者引用调用虚函数• 被调用的函数必须是虚函数,并且完成了虚函数重写/覆盖。说明:要实现多态效果,第一必须是基类的指针或引用,因为只有基类的指针或引用才能既指向基类对象又指向派生类对象;第二派生类必须对基类的虚函数完成重写/覆盖,重写或者覆盖了,基类和派生类之间才能有不同的函数,多态的不同形态效果才能达到。
2026-05-25 23:32:03
450
原创 C++面向对象三大特征之二【继承】——单继承、多继承、菱形继承问题
我们了解了继承的默认构造函数,那本片博客让我们来看看什么是单继承、多继承、菱形继承。
2026-05-16 17:13:18
368
原创 C++面向对象三大特性之二【继承】——详解 C++ 函数隐藏机制
下面我们看到Person是基类,也称作父类。Student是派生类,也称作子类。(因为翻译的原因,所以既叫基类/派生类,也叫父类/子类)继承基类成员访问方式的变化基类成员权限 \ 继承方式public 公有继承protected 保护继承private 私有继承基类的 public 成员派生类 public 成员派生类 protected 成员派生类 private 成员基类的 protected 成员派生类 protected 成员派生类 protected 成员。
2026-04-19 21:03:48
367
原创 C++模板的进阶2【 模板分离编译】
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。// 显式实例化,只给 int 和 double 生成代码intdoublemain.cppint main()Add(1, 2);// OK// OK// 报错!没有实例化 long long模板优缺点模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性。
2026-04-11 18:05:02
45
1
原创 C++ 模板进阶1:【从偏特化到原理,彻底吃透类型匹配】
我们在经过栈和队列的学习已经知道,优先级队列、堆算法、仿函数等等的一些用法。那vector的底层还是堆。本篇博客将对堆的总结及模板的进阶进行讲解。
2026-04-11 17:42:19
378
原创 C++容器适配器——【优先级队列】
它的真名叫做:函数对象(Function Object)仿函数 = 看起来像函数,实际上是个对象(类的实例)add(1, 2);Add add;add(1, 2);// 看起来像函数,其实是对象在调用 operator()就是一个类,里面重载了 operator()struct Add为什么叫 “仿” 函数?因为它不是真函数,但用起来和函数一模一样。→ 模仿函数 → 仿函数。
2026-04-03 10:40:15
358
原创 C++容器适配器【接口篇】——栈和队列讲解
本篇我们来讲解一下栈和队列的接口,详细讲解优先级队列,手撕栈和队列。栈的接口:队列(queue)1.队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。3. 底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少支持以下操作:empty:检测队列是否为空siz
2026-04-02 17:15:00
245
原创 C++之【深入理解Vector】三部曲最终章
我们已经了解了vector的接口用法及空间是如何增长的还有Vector是如何遍历的。那下面我们来了解一下vector程序的结构。
2026-02-08 13:57:53
93
原创 C++之【深入理解Vector】三部曲之二
我们已经理解了vector的初始化和迭代器初始化,那么接下来要继续深入理解vector,它是如何扩容的,空间及数据个数是如何存储的。
2026-02-03 21:11:12
305
原创 C++之【深入理解Vector】三部曲之一
在我们学习了string类之后,我们来学习一个新的容器vector,在我们学习这个新的容器的时候,一定不要忘记复习string类。
2026-01-29 21:51:56
303
原创 C++【string篇4】string结尾篇——字符编码表、乱码的来源及深浅拷贝
前面,我们经过学习string类的增删查改,对string进行深一步的了解,发现那我们的汉字是如何存储的呢?ASCII码表只对应英文和一些符号,这些英文、符号和数字一一对应映射。
2026-01-21 19:52:35
700
2
原创 C++【string篇3】:从零基础开始到熟悉使用string类
前面我们主要介绍了一些string函数和一些操作使用方法,那string类是如何存储的呢,空间的扩容是怎样的呢?使用string扩容函数。
2026-01-10 19:09:15
471
1
原创 C++【string篇2】:从零基础开始到熟悉使用string类
本篇博客是2026年第一篇博客,祝大家2026年继续加油,少写Bug,心想事成,平平安安,奈何语文不咋的,不然肯定祝福写满,以后我也会继续努力,给大家攻克每一个知识点,调试每一个Bug.
2026-01-02 19:46:34
281
1
原创 C++【string篇1遍历方式】:从零开始到熟悉使用string类
接上回讲到string类的构造,string的构造方式很多,取决于自己怎么使用,本篇博客将会继续深入学习string类。通过文档的方式来继续了解string的更多用法。
2025-12-26 21:38:55
472
1
原创 C++【模板初阶详解指南】——WHAT-YOU-WANT
接下来我要讲解的是C++语法第一个重大"变革",那就是模板,模板就像万能数学公式一样,十分的好用。
2025-12-22 21:03:19
652
原创 C++内存管理深度剖析
new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数。
2025-12-20 17:42:30
1000
2
原创 C++基础【内部类、匿名对象和对象拷贝时的编译器优化】
本篇博客是我们要了解类和对象的最最最最后的一点知识了,我发誓,本篇博客是承上启下的一篇文章。
2025-12-17 20:42:37
663
原创 C++基础语法篇八 ——【类型转换、再探构造、友元】
不出意外,本篇博客是对类和对象的结尾,最后一些相关知识点在本篇博客将会细细讲解。下课来看深入探究构造函数。
2025-12-15 22:51:48
672
1
原创 C++基础语法篇七 ——类和对象重载运算符之时间模拟器
之前还有些定义没讲到的,本篇博客算是对运算符重载的讲解结尾。之前我们只重载了赋值运算符,并让赋值运算符和拷贝函数经行了对比,那么接下来让我们来看看还有哪些运算符可以重载的,完整的日期计算是什么样的。
2025-12-05 21:09:53
261
1
原创 C++基础语法篇六 ——类和对象之重载运算符:指北
• 重载<<和>>时,需要重载为全局函数,因为重载为成员函数,this指针默认抢占了第⼀个形参位置,第⼀个形参位置是左侧运算对象,调用时就变成了 对象<<cout,不符合使用习惯和可读性。没有显式实现时,编译器会自动生成⼀个默认赋值运算符重载,默认赋值运算符重载行为跟默认拷贝构造函数类似,对内置类型成员变量会完成值拷贝/浅拷贝(⼀个字节⼀个字节的拷贝),对自定义类型成员变量会调用他的赋值重载函数。C++规定,后置++重载时,增加⼀个int形参,跟前置++构成函数重载,方便区分。
2025-11-30 21:16:29
643
原创 C++基础语法篇五 ——类和对象
浅拷贝就是Date类中不用向其他内存区域申请额外空间,一般就像给对象的成员变量赋值(内置类型),栈帧结束后就自动销毁了,也不用析构。但是一旦给内置类型成员变量申请空间,就需要深拷贝了。来看我们在调用拷贝函数的时候,传值传参是一种拷贝行为,传过去之后,调用拷贝函数,在调用的时候,又要传值传参,还要调用拷贝函数,就不返回了,一直死递归。所以我们要引用接收。如果一个构造函数的第⼀个参数是自身类类型的引用,且任何额外的参数都有默认值,则此构造函数也叫做拷贝构造函数,也就是说拷贝构造是⼀个特殊的构造函数。
2025-11-29 22:11:06
386
原创 C++基础语法篇四 ——类和对象
析构函数与构造函数功能相反,析构函数不是完成对对象本身的销毁,比如局部对象是存在栈帧的,函数结束栈帧销毁,他就释放了,不需要我们管,C++规定对象在销毁时会自动调用析构函数,完成对象中资源的清理释放工作。编译器默认生成的构造函数,都叫做默认构造函数。构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并不是开空间创建对象(我们常使用的局部对象是栈帧创建时,空间就开好了),而是对象实例化时初始化对象。1.我们不实现时,编译器默认生成的函数行为是什么,是否满足我们的需求。
2025-11-23 23:15:47
1061
原创 C++的基础语法篇一 ——命名空间
本篇博客正式进入C++语言的学习,C++是兼容C语言的,也是弥补了C语言的一些不足,同时也是向更高难度语言方面的学习。
2025-11-09 16:05:12
987
1
原创 数据结构—排序算法篇三
本篇博客是归并排序的讲解和一些非比较排序的讲解。归并排序你可能没怎么听说过,但是你可能听说过有序链表的合并、有序数组的合并。归并排序就是将两个有序数组进行排序,然后在放到新的数组里形成有序。
2025-11-07 15:16:34
340
1
原创 数据结构—排序算法篇二
本期是对排序的深入讲解,排序能让我对循环和递归的第二次理解,让我们重新感受到循环和递归的强大!学完排序感觉脑子在燃烧,这可能就是对编程的热爱吧。
2025-11-06 17:03:18
465
原创 数据结构——二叉树(终)
这次我们要对二叉树经行更深层次的学习,链式二叉树的创建、存储,销毁、如何求二叉树高度、第N层的节点数、叶子节点数,以及二叉树的所有节点数。
2025-10-13 18:03:13
629
原创 数据结构——堆-二叉树
通过学习顺序表、链表、栈和队列。我们要思考的逻辑更多了,可能就像学高数一样越往后越难,但是当我们把困难攻破就在走上坡路了。有一句话,这里送给努力的你和我,那就是:路虽远,行则将至;话不多说,接下来看新的数据结构——堆-二叉树。
2025-09-16 17:54:29
1134
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅