- 博客(53)
- 收藏
- 关注
原创 C++——红黑树
红黑树,同样是一种二叉搜索树,但在每个结点上增加一个存储位,来表示,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,即最长路径的节点个数不超过最短路径的2倍,因而是的。AVL树是,每个节点的左右子树高度差不超过1。很接近完全二叉树,高度差差别不大,缺少的节点基本在最后两三层而红黑树则是最长路径的节点个数不超过最短路径的2倍。所以红黑树的效率相比AVL树是更慢的,那为什么红黑树的使用却比AVL树更为普遍呢?
2024-11-25 21:48:54
1938
原创 C++——二叉树(进阶)
二叉搜索树又称,它或是,又或是具有的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树可以观察到,对这棵树进行的话,可以得到一串升序的数据如果左子树放大的数据,右子树放小的数据,那么中序遍历就是降序了。
2024-11-02 17:37:17
3326
原创 C++——多态
一、重载要求两个函数在同一个作用域中,函数名相同、参数不同(类型、个数、顺序)时,构成重载。二、重写(覆盖)要求两个函数分别在父类和子类的作用域中,必须都是虚函数,并且要求1.返回值 2.函数名 3.参数类型都要相同,协变例外。三、隐藏(重定义)同样要求两个函数分别在父类和子类的作用域中,但只要求二者的函数名相同,就构成隐藏。两个父类与子类里的同名函数,不构成重写,那就是隐藏。关于纯虚函数一、纯虚函数,或者说抽象类,在某种程度上,间接强制了子类去重写虚函数。
2024-10-26 22:14:22
3034
原创 C++——继承
上述代码中,Person就是父类,也称作基类。Student是子类,也称作派生类。一、基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在子类里面还是子类外面都不能去访问它。所以父类的一些成员,如果不想要给子类使用,就可以设置为私有,但实际上父类成员也很少定义为私有,因为这样就不符合复用的规则了。二、基类的protected成员被继承下来后,在子类里面可以访问,在子类外面不可以访问。
2024-10-19 23:25:56
2378
原创 C++——反向迭代器
list没有访问到第一个值,而且访问了哨兵位,是随机值。但实际上,这只是另外一种实现方式,它拥有自己的优势。复用已经实现的迭代器实现反向迭代器。乍看库中的实现,vector会越界。为避免上述情况,在其中访问元素时,使用正向迭代器适配出反向迭代器。也可以修改,但要重载运算符。,而且在意义上是不建议重载的。此时出现了问题,编译不通过。
2024-10-11 19:19:35
910
原创 C++——优先级队列和仿函数
优先级队列不是传统的队列,它不是先进先出,它是让优先级高的先出。实际上它就是堆。注意:优先级队列不需要单独包含头文件,它放在中,使用时包含queue的头文件即可,#include
2024-10-08 14:45:27
1593
1
原创 C++——模拟实现stack和queue
实际上,deque并不常用下标的随机访问,还是vector更强头、尾的插入删除方面,deque还不错,略优于vector和list并且相对于list它的CPU高速缓存更好它头、尾的插入、删除效率> [] > 中间位置的插入、删除。
2024-10-07 14:04:39
703
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人