C++修习之路
文章平均质量分 78
c++学习
Echo_Aran
️
展开
-
(unordered)map和set封装(底层红黑树)
class Setprivate:public://底层是对树的封装//两个迭代器都是const迭代器//此行报错while (it!报错原因,无法转变树中的迭代器,需要自己实现转变:为什么是试图从non_const转变为const:此时调用的是第一个begin返回的是树的iterator,但是set的iterator相当于树的const_iterator,类型不匹配而且不能自动发生转换,因此报错。原创 2023-10-03 23:49:44 · 1282 阅读 · 2 评论 -
typename关键字详解(消除歧义)
typename相当于泛型编程中class的同义关键字,用来指出模板类型所依赖的名称是类型名而非变量名变量名原创 2023-09-17 18:53:26 · 1347 阅读 · 22 评论 -
【C++】map和set
查找:set的底层是红黑树,存储键值对,中序遍历结果是有序的,默认从小到大排序,查找的时间复杂度是log2nlog_2nlog2n去重:除了排序,set还有去重的功能。底层1:set存储的实际上是**<value,value>结构**,map才是真正的<key,value>底层2:**set的key值不能修改,因为迭代器底层都是const迭代器。**但是可以插入和删除。map中的key是唯一的,并且不能修改默认按照小于的方式对key进行比较。原创 2023-08-30 11:41:36 · 785 阅读 · 20 评论 -
平衡二叉树(AVL树)C++
让待删除结点左子树当中key值最大的结点,或待删除结点右子树当中值最小的结点代替待删除结点被删除(代码中以后者为例),然后再将待删除结点的key值以及value值都改为代替其被删除的结点的值即可。1.当parent的平衡因子为-2,parent的左孩子的平衡因子为-1时,进行右单旋。2.当parent的平衡因子为-2,parent的左孩子的平衡因子为1时,进行左右双旋。4.当parent的平衡因子为2,parent的右孩子的平衡因子为-1时,进行右左双旋。与二叉搜索树相比,多了更新平衡因子这个步骤。原创 2023-08-27 15:04:09 · 858 阅读 · 11 评论 -
C++多态
被virtual修饰的函数是虚函数public:virtual void BuyTicket() { cout << "买票-全价" << endl;原创 2023-08-26 21:56:23 · 466 阅读 · 3 评论 -
C++继承
C++中继承相关知识详解原创 2023-08-01 17:55:29 · 172 阅读 · 5 评论 -
栈,队列,优先级队列的实现和仿函数
仿函数是一种具有函数行为的类,在类内重载了运算符(),使对象可以像函数一样调用实例代码public:// 创建一个仿函数对象// 调用仿函数return 0;原创 2023-07-26 23:57:45 · 285 阅读 · 1 评论 -
命名空间详解
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名 空间的成员。//1.命名空间的正常定义//命名空间中可以定义:变量/函数/类型int a = 1;int val;//注意末尾没有;//3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。//在text.h头文件里的,但合并在了一个命名空间中。原创 2023-04-15 17:15:52 · 764 阅读 · 0 评论 -
c++预编译指令
c++预编译指令原创 2023-02-23 13:08:09 · 62 阅读 · 0 评论 -
C++缺省参数详解
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用形参的缺省值,否则使用指定的实参。1.半缺省参数必须从右往左依次来给出,不能间隔着给。3.缺省值必须是常量或者全局变量。(不知道以哪个为准)原创 2023-04-22 10:20:23 · 160 阅读 · 0 评论 -
C/C++内存管理
1.调用operator new申请空间2. 在申请的空间上执行构造函数,完成对象的构造1.在空间上执行析构函数,完成对象中资源的清理工作2.用operator delete函数释放对象的空间1.调用operator new[ ]函数,在operator new[ ]中实际调用N次operator new完成N个对象空间的申请2.在申请的空间上调用N次构造函数1.在释放的对象空间上执行N次析构函数,完成对N个对象中资源的清理。原创 2023-05-21 16:54:17 · 163 阅读 · 0 评论 -
C++函数重载详解
自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个是男足。前者是“谁也赢不了!”,后者是“谁也赢不了!1.函数重载的概念函数重载:是函数的一种特殊情况,C++中允许在中,声明几个功能类似的,这些同名函数的,常用来处理实现功能类似而数据类型不同的问题。原创 2023-04-22 18:31:41 · 198 阅读 · 0 评论 -
模板初阶
class 类模板名// 类内成员定义类模板无法推演类型,必须要通过类名<类型>的方式实例化。int _size;//类模板中函数放在类外定义时,需要加函数模板参数列表//类模板无法推演实例化 都是显示实例化Stack<T>::Stack(size_t capacity)//函数的缺省值只能在定义和声明中出现一次 一般放在声明_size = 0;原创 2023-05-24 22:41:11 · 59 阅读 · 0 评论 -
初始化列表&static成员&友元&内部类&匿名对象
位置。原创 2023-05-18 16:12:30 · 117 阅读 · 0 评论