C++笔记
文章平均质量分 92
C++笔记
時語風華
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++笔记归纳20:智能指针
share_ptr指向的对象也是有线程安全问题的,但这个对象的线程安全不归share_ptr管,也管不了。引用计数减到0时代表当前析构的share_ptr是最后一个管理资源的对象,则析构资源。左边节点中的_next管理右边节点,_next析构后,右边的节点释放。右边节点中的_prev管理左边节点,_prev析构后,左边的节点释放。_next是左边节点的成员,左边节点释放后,_next析构。_prev是右边节点的成员,右边节点释放后,_prev析构。如果不是new出来的资源,交给智能指针管理,析构时会崩溃。原创 2026-04-06 14:49:42 · 440 阅读 · 0 评论 -
C++笔记归纳19:异常
如果在,则查找与之匹配的catch子句,发现有匹配的,则跳转到catch子句处理。析构函数中,抛异常也需谨慎处理,析构函数要释放10个资源,释放到第5个时抛异常。如果不在或者catch子句的类型不对,则退出当前函数,在调用链的外层函数查找。要获取异常信息,调用what函数,what是一个虚函数,派生类可重写。捕获异常后需要重新抛出,直接throw,就可以把捕获的对象直接抛出。抛出异常后,程序暂停当前函数的执行,寻找与之匹配的catch子句。异常时,抛出一个对象,这个对象可以涵盖更全面的各种信息。原创 2026-04-05 14:31:07 · 357 阅读 · 0 评论 -
C++笔记归纳18:C++11
(类型转换,产生临时对象,优化为直接构造)(注:{}初始化时,可以省略掉=)原创 2026-04-04 20:11:28 · 481 阅读 · 0 评论 -
C++笔记归纳17:哈希
将{19,30,52,74}这组值映射到M = 11的表中,则h2(key) = key % 10 + 1。将{19,30,5,36,13,20,21,12,24,96}这一组值映射到M = 11的表中。后续映射到hash0,hash1,hash2,hash3的值都会争夺hash3的位置。将{19,30,5,36,13,20,21,12}这组值映射到M = 11的表中。比如:如果删除30,下标9的位置就会没有数据,不会进行探测,导致20查找失败。原创 2026-03-29 20:48:35 · 460 阅读 · 0 评论 -
C++笔记归纳16:封装map & set
源码中T代表value,value_type并非key_value中的value,而是节点中存储的数据类型。rb_tree使用了泛型思想,由第二个模板参数Value决定_rb_tree_node中存储的数据类型。rb_tree第二个模板参数Value已经决定了节点中存储数据的类型,为什么还要传Key?所以begin()会返回第一个节点的iterator,即10(最左节点)的迭代器。要访问的下一个节点在当前节点的祖先里面,沿当前节点到根的祖先路径向上找。代表当前节点与当前节点所在的子树已经访问完成。原创 2026-03-27 19:44:06 · 349 阅读 · 0 评论 -
C++笔记归纳15:红黑树
前序遍历,用形参记录从根节点到当前节点的黑色节点数量,走到空就计算出一条路径的。(注:此时c是红色,p是红色,g必须为黑色,三个节点颜色固定,主要看节点u)p的父亲节点为g(grand)p的兄弟节点为u(uncle)黑色节点再以任意一条路径的黑色节点数量作为参考值,进行比较。新增节点为c(cur)c的父亲节点为p(parent)c为红、p为红、g为黑,u不存在或者u存在且为黑。c为红、p为红、g为黑,u不存在或者u存在且为黑。(从根开始每条路径黑色节点的数量都是相等的)原创 2026-03-26 17:03:19 · 362 阅读 · 0 评论 -
C++笔记归纳14:AVL树
更新后的parent平衡因子为0更新到根节点,根节点平衡因子为-1或1。原创 2026-03-25 20:58:58 · 413 阅读 · 0 评论 -
C++笔记归纳13:map & set
输入:words = ["i", "love", "leetcode", "i", "love", "coding"],k = 2。输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]输入:nums1 = [1,2,2,1],num2 = [2,2]当手机端输入一个新的照片D时,会和云相册作差集,将D上传到云相册。输入:head = [3,2,0,-4],pos = 1。原创 2026-03-20 23:40:39 · 423 阅读 · 0 评论 -
C++笔记归纳12:二叉搜索树
/定义节点模板K _key;原创 2026-03-17 22:00:07 · 363 阅读 · 0 评论 -
C++笔记归纳11:多态
目录多态一、多态的概念1.1.多态的概念1.2.多态的类型1.3.多态的定义及实现二、虚函数2.1.虚函数的定义2.2.虚函数的重写(覆盖)2.3.虚函数的试题2.4.虚函数重写问题2.4.1.协变2.4.2.析构函数的重写2.4.3.override和final关键字2.5.重载vs重写vs隐藏2.6.纯虚函数和抽象类三、多态的原理3.1.虚函数表指针(虚表指针)3.2.动态绑定与静态绑定3.3.虚函数表多态(polymorphism):多种形态编译时多态(静态多态):函数重载和函数模板传不同类型的参数就原创 2026-03-16 00:16:30 · 438 阅读 · 0 评论 -
C++笔记归纳10:继承
面向对象程序设计使代码可以复用的最重要的手段(复用:类似模板,将重复的程序交给编译器处理)允许在保持原有类特性的基础上进行扩展增加方法(成员函数)和属性(成员变量)这样产生新的类称为子类对于学生类与老师类,有很多的方法与属性是一样的public:// 进⼊校园/图书馆/实验室刷⼆维码等⾝份认证// ...// 学习// ...protected:// 姓名// 地址// 电话// 年龄int _stuid;原创 2026-03-14 16:56:01 · 381 阅读 · 0 评论 -
C++笔记归纳9:模板进阶
复用代码,节省资源增强代码的灵活性编译报错的信息非常凌乱,不易定位。原创 2026-03-11 21:19:16 · 400 阅读 · 0 评论 -
C++笔记归纳8:stack & queue
设计模式:一套被反复使用的,多数人知晓的,进过分类编目的,代码设计经验的总结。假设压入栈的所有数字均不相等例如序列1,2,3,4,5是某栈的压入顺序。输入:root = [3,9,10,null,null,15,7]序列4,5,3,2,1是该压栈序列对应的一个弹出序列。输入:[1,2,3,4,5],[4,5,3,2,1]输入:[1,2,3,4,5],[4,3,5,1,2]但4,3,5,1,2就不可能是该压栈序列的弹出序列。输出:[[3],[9,20],[15,7]]判断第二个序列是否可能为该栈的弹出顺序。原创 2026-03-10 19:15:18 · 431 阅读 · 0 评论 -
C++笔记归纳7:list
带头双向循环列表允许以O(1)的方式(constant time)进行插入与删除。原创 2026-03-08 16:28:27 · 307 阅读 · 0 评论 -
C++笔记归纳6:vector
输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]在string中,如果n比capacity小,有可能会进行缩容,但不会比size小。在vector中,如果n比capacity小,是不会进行缩容的。给定一个非负整数numRows,生成杨辉三角的numRows行。二、成员函数(member functions)在杨辉三角中,每个数是它左上方和右上方的数的和。如果没有传值,就使用默认构造函数中的缺省值。如果传值,就使用传的值进行初始化。默认构造(无参构造)原创 2026-03-06 00:05:13 · 511 阅读 · 0 评论 -
C++笔记归纳5:string
标准模板库是C++标准库的重要组成部分,不仅是一个可复用的组件库而且是一个包含数据结构和算法的软件框架对于给定的若干个单词组成的句子每个单词均由大小写字母混合构成,单词间使用单个空格分隔输出最后一个单词的长度输入:HelloNowcoder输出:13int main()// 不要使用cin>>line,因为会它遇到空格就结束了return 0;getline函数当输入到指定字符时按下回车才会停止int main()string str;return 0;原创 2026-03-03 18:08:15 · 497 阅读 · 0 评论 -
C++笔记归纳4:模板初阶
/ 类模版public:,_size(0)~Stack()private:T* _array;类模板都是显示实例化模板的声明和定义不建议分离到两个文件.h和.cpp中,会出现链接错误。原创 2026-02-27 20:45:43 · 541 阅读 · 0 评论 -
C++笔记归纳3:内存管理
先调用operator new函数申请空间,失败就抛异常再调用构造函数进行初始化。原创 2026-02-26 23:05:11 · 599 阅读 · 0 评论 -
C++笔记归纳2:类和对象
定义类的关键字类的名字类的主体类中的变量为成员变量(类的属性)类中的函数为成员函数(类的方法)//成员函数//...void pop()//...int top()//...//成员变量int* a;int top;为了区分成员变量,习惯给成员变量加一个特殊的标识,比如_或m开头class Datepublic:_day = day;int _month;int _day;原创 2026-02-25 16:15:30 · 716 阅读 · 0 评论 -
C++笔记归纳1:C++入门基础
namespace + 命名空间的名字,{}内为命名空间的成员命名空间中可以定义变量、函数、类型等printf函数访问的是全局域中rand函数,而非命名空间域中的rand变量2.3.namespace的本质定义出一个域,这个域全局域各自独立,不同的域可以定义同名变量域作用限定符:::在全局域中创建一个变量a,在main函数中也创建一个变量a如果在main函数中打印,则会优先打印main函数中的变量a如果想打印全局域中的变量a,就需要在a前加域作用限定符要使用域中的变量,需要在变量前加域名称与。原创 2026-02-11 19:26:32 · 569 阅读 · 0 评论
分享