![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 96
有效的放假者
这个作者很懒,什么都没留下…
展开
-
C++——哈希
1. unordered系列关联式容器1.1 unordered_map1.1.1 unordered_map的文档介绍1.1.2 unordered_map的接口说明1.2 unordered_set2. 底层结构2.2 哈希冲突2.3 哈希函数常见哈希函数2.4 哈希冲突解决2.4.2 开散列开散列增容开散列的思考3. 模拟实现3.1 哈希表的改造3.2 unordered_map3.3 unordered_set原创 2023-05-05 16:13:52 · 703 阅读 · 2 评论 -
C++——一种特殊的二叉搜索树之红黑树
1 红黑树的概念2 红黑树的性质3 红黑树节点的定义4 红黑树的插入操作情况一: cur为红,p为红,g为黑,u存在且为红。情况二: cur为红,p为红,g为黑(不存在连续的红结点),u不存在/u存在且为黑(仅仅单旋)情况三: cur为红,p为红,g为黑,u不存在/u存在且为黑(旋转方法与情况二不同——双旋)插入的三种情况代码演示及详解注释:5 如何验证一棵树是否是红黑树6 红黑树的删除7 红黑树与AVL树的比较8 红黑树的应用原创 2023-04-14 21:52:34 · 559 阅读 · 0 评论 -
C++——一种特殊的二叉搜索树之AVL树
序言1 AVL树的概念2 AVL树节点的定义3 AVL树的插入是否继续更新依据:子树的高度是否变化4 AVL树的旋转旋转的原则:1. 新节点插入较高左子树的左侧---左左:右单旋2. 新节点插入较高右子树的右侧---右右:左单旋3. 新节点插入较高左子树的右侧---左右:先左单旋再右单旋4. 新节点插入较高右子树的左侧---右左:先右单旋再左单旋5.如何验证一颗树是AVL树的验证?6 AVL树的删除(了解)7 AVL树的性能原创 2023-04-14 21:53:34 · 554 阅读 · 0 评论 -
C++——map和set的应用总结
1. 关联式容器2. 键值对3. 树形结构的关联式容器3.1 set3.1.1 set的介绍3.1.2 set的使用3.2 multiset3.2.1 multiset的介绍3.2.2 multiset的使用3.3 map3.3.1 map的介绍3.3.2 map的使用operator[]3.4 multimap3.4.1 multimap的介绍3.4.2 multimap的使用原创 2023-02-21 12:47:03 · 651 阅读 · 6 评论 -
C++——二叉树排序树
1 二叉搜索树概念2 二叉搜索树操作与模拟实现2.1 二叉搜索树的查找非递归版本递归版本2.2 二叉搜索树的插入非递归版本递归版本2.3 二叉搜索树的删除非递归版本递归版本3 二叉搜索树的应用(K模型、KV模型)4 二叉搜索树的性能分析原创 2023-02-18 21:22:10 · 1280 阅读 · 4 评论 -
C++——继承和多态常见的面试问题
1.什么是多态?2.什么是重载、重写(覆盖)、重定义(隐藏)?3.多态的实现原理?4.inline函数可以是虚函数吗?5.静态成员可以是虚函数吗?6.构造函数可以是虚函数吗?7.析构函数可以是虚函数吗?什么场景下析构函数是虚函数?8.对象访问普通函数快还是虚函数更快?9.虚函数表是在什么阶段生成的,存在哪的?10.C++菱形继承的问题?虚继承的原理?11.什么是抽象类?抽象类的作用?原创 2023-02-13 22:07:18 · 569 阅读 · 1 评论 -
C++——多态|虚函数|重写|虚表
1. 多态的概念1.1 概念2. 多态的定义及实现2.1多态的构成条件2.2 虚函数2.3虚函数的重写虚函数重写的三个例外:2.4 普通调用和多态调用:2.5 C++11 override 和 final2.6 重载、虚函数的覆盖(重写)、隐藏(重定义)的对比3. 抽象类(有关纯虚函数)3.1 概念3.2 接口继承和实现继承4.多态的原理4.1虚函数表派生类的虚表生成流程:虚函数存在哪的?**虚表**存在哪的?4.2多态的原理4.3 动态绑定与静态绑定5.单继承原创 2023-02-13 21:55:50 · 3014 阅读 · 0 评论 -
C++——继承|继承关系|什么是隐藏|菱形继承
1.继承的概念及定义1.1继承的概念1.2 继承定义1.2.1定义格式1.2.2继承关系和访问限定符1.2.3继承基类成员访问方式的变化2.父类和子类对象赋值转换3.继承中的作用域4.派生类的默认成员函数5.继承与友元6. 继承与静态成员7.复杂的菱形继承及菱形虚拟继承如何解决数据冗余和二义性的?虚拟继承解决数据冗余和二义性的原理8.继承的总结和反思原创 2023-02-09 21:37:51 · 391 阅读 · 2 评论 -
C++——模板特化&&模板为什么不能分离编译
1. 非类型模板参数2. 模板的特化2.1 概念2.2 函数模板特化2.3 类模板特化2.3.1 全特化2.3.2 偏特化2.3.3 类模板特化应用示例3 模板分离编译3.1 什么是分离编译3.2 模板为什么不能分离编译?3.3 解决方法4. 模板总结原创 2023-02-05 16:51:17 · 491 阅读 · 1 评论 -
C++——优先级队列
1.priority_queue的介绍和使用1.1 priority_queue的介绍1.2 priority_queue的使用1.3 在OJ中的使用1.4 priority_queue的模拟实现仿函数/函数对象向上调整向下调整原创 2023-02-04 22:22:02 · 3933 阅读 · 0 评论 -
C++——stack和queue的介绍和使用
stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack类被实现为容器适配器,stack类使用特定容器类的封装对象作为其底层容器,提供一组特定的成员函数来访问其元素。元素只能从特定容器的栈顶被推或者弹出。stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作push_back:尾部插入元素操作。原创 2023-02-03 19:22:31 · 480 阅读 · 0 评论 -
【C++】list介绍及使用&&模拟实现&&对比vector
list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是带头双向循环链表结构。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好,但排序效率list相比于vector会更低。与其他序列式容器相比,list最大的缺陷是不支持任意位置的随机访问,比如:要访问list的第6个元素,必须从已知的位置(比如头部或者尾部)迭代到该位置,在这段位置上迭代需要线性的时间开销;原创 2023-01-10 21:48:18 · 460 阅读 · 0 评论 -
C++——vector的使用以及模拟实现
vector学习时一定要学会查看文档:vector的文档介绍,vector在实际中非常的重要,在实际中我们熟悉常见的接口就可以,下面列出了哪些接口是要重点掌握的。(constructor)构造函数声明接口说明vector()(重点)无参构造构造并初始化n个val(重点)拷贝构造使用迭代器进行初始化构造。原创 2022-11-27 17:56:53 · 460 阅读 · 0 评论 -
C++string类的模拟实现以及经验分享
1. 为什么学习string类?1.1 C语言中的字符串C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些string系列的库函数,例如strcpy、strstr、strcmp、memcpy、memmove等等,但是这些库函数与字符串是分离开的,不太符合面向对象程序设计的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。1.2 两个面试题字符串转整形数字字符串相加在OJ中,有关字符串的题目基本以string类的形式出现,而且在常规工作中,为了简单原创 2022-11-17 17:22:49 · 513 阅读 · 0 评论 -
C++——泛型编程||函数模板||类模板
1. 泛型编程2. 函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则3. 类模板3.1 类模板的定义格式3.2 类模板的实例化原创 2022-10-26 21:15:47 · 170 阅读 · 2 评论 -
C++——内存管理以及经验分享
1. C/C++内存分布请老铁们看下面这样的问题2. C++内存管理方式2.1 new/delete操作内置类型2.2 new和delete操作自定义类型3. operator new与operator delete函数3.1 operator new与operator delete函数4. new和delete的实现原理4.1 对于内置类型4.2 对于自定义类型5. 定位new表达式(placement-new) (了解)6. 常见面试题6.1 malloc/free和new/de原创 2022-10-24 17:17:02 · 115 阅读 · 0 评论 -
C++——类和对象(下)
1. static成员1.1 概念2.2 特性3. 友元3.1 友元函数3.2 友元类4. 内部类5.匿名对象原创 2022-10-22 18:11:36 · 476 阅读 · 0 评论 -
C++——初始化列表&&explicit关键字
初始化列表:以一个冒号开始,接着是以一个逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的。但上述代码可读性不是很好,用explicit修饰构造函数,将会禁止构造函数的隐式转换。构造函数不仅可以构造与初始化对象,对于单个参数或者除第一个参数无默认值其余均有默认值。在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。对于构造函数有不了解的老铁可以看这篇文章哦:文章链接。的构造函数,还具有类型转换的作用。上面的程序输出什么值呢?D.输出1 随机值。原创 2022-10-21 12:27:07 · 518 阅读 · 0 评论 -
C++——日期类的实现
下面这里用一个数组代表12个月,还需要分辨一下是平年还是闰年2.全缺省的构造函数这里是全缺省日期类的构造函数,下面代码还检查了一下你构造的日期是否合理。3.打印函数4.拷贝构造函数4.赋值运算符重载下面的赋值重载自动把=左边的一个对象当作*this的对象,把右边的对象赋值给左边的对象,而且需要注意的是,赋值运算符是可以连续赋值的,我们设计函数的时候要把这一点考虑进去,返回值就要返回=左边的对象。5.析构函数对于日期类,没有空间的开辟(malloc等),其实不写也是可以的,但是如果写的话,原创 2022-10-17 23:01:03 · 867 阅读 · 0 评论 -
C++类和对象(中)(6个默认成员函数)
1.类的6个默认成员函数2. 构造函数2.1 概念2.2 特性3.析构函数3.1 概念3.2 特性4. 拷贝构造函数4.1 概念4.2 特征5.赋值运算符重载5.1 运算符重载5.2 赋值运算符重载5.3 前置++和后置++重载6.const成员7.取地址及const取地址操作符重载原创 2022-10-14 21:47:52 · 488 阅读 · 5 评论 -
C++类和对象(上)
1.面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装4.1 访问限定符4.2 封装5.类的作用域6.类的实例化7.类对象模型7.1 如何计算类对象的大小7.2 类对象的存储方式猜测7.3 结构体内存对齐规则8.this指针8.1 this指针的引出8.2 this指针的特性8.3. C语言和C++实现Stack的对比原创 2022-10-06 19:30:52 · 624 阅读 · 0 评论 -
C++——入门详解(下)
1.内联函数1.1 概念1.2 特性2.auto关键字(C++11)2.1 类型别名思考2.2 auto简介3.3 auto的使用细则(重要)3.3 auto不能推导的场景3. 基于范围的for循环(C++11)(简单介绍)3.1 范围for的语法9.2 范围for的使用条件4. 指针空值nullptr(C++11)4.1 C++98中的指针空值原创 2022-10-05 21:45:51 · 621 阅读 · 0 评论 -
C++入门之引用(超详解)
1 引用概念2 引用特性3.常引用的相关细节4.使用场景5 传值、传引用比较5.1传值、传引用调用函数的效率比较5.2 值和引用的作为返回值类型的性能比较6 引用和指针的区别原创 2022-09-27 18:38:25 · 1440 阅读 · 0 评论 -
C++——入门详解(上)
1.C++关键字2.命名空间2.1 命名空间定义2.2 命名空间使用3. C++输入&输出(简单介绍)4. 缺省参数4.1 缺省参数概念4.2 缺省参数分类5. 函数重载5.1 函数重载概念原创 2022-09-25 19:45:13 · 1522 阅读 · 0 评论