
[C++] 数据结构进阶
文章平均质量分 93
PiPiHang
这个作者很懒,什么都没留下…
展开
-
【C++】图解AVL树
_kv(kv), _bf(0){}// 该节点的左孩子// 该节点的右孩子// 该节点的双亲int _bf;原创 2024-06-29 12:20:18 · 1067 阅读 · 0 评论 -
【C++】二叉搜索树
问题:如果退化成单支树,二叉搜索树的性能就失去了。那能否进行改进,不论按照什么次序插入关键码,二叉搜索树的性能都能达到最优?那么我们后续学习的AVL树和红黑树就可以上场了。插入和删除操作都必须先查找,查找效率代表了二叉搜索树中各个操作的性能。除此之外,空树也是一颗二叉搜索树。原创 2024-06-24 16:59:46 · 808 阅读 · 1 评论 -
【C++】有关多态
在我们上一篇文章《有关继承》里面,我们提到了面向对象三大特性之一的继承,接下来我们来讲第二个特性——多态。需要声明的是,本文中的代码都是在VS2022下的x86程序中,涉及的指针都是4bytes。必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数:被virtual修饰的类成员函数称为虚函数public:virtual void BuyTicket() { cout << "买票-全价" << endl;原创 2024-06-21 18:30:33 · 1225 阅读 · 0 评论 -
【C++ STL】优先级队列(priority_queue)详解
是一种队列,其中每个元素都被赋予一个优先级。在优先级队列中,元素以优先级顺序出队,而不是按插入顺序出队。也就是说,优先级最高的元素最先出队。的声明在<queue>中。从上可以看到,和stackqueue都是容器适配器,且的底层默认容器是vector。的第三个模板参数是一个仿函数。在C++中,仿函数是一种类,它重载了函数调用运算符operator(),从而使得它的对象可以像函数一样被调用。除此之外,仿函数还可以携带状态(即成员变量),这使得它比普通的函数指针更为灵活。原创 2024-05-30 17:55:07 · 1016 阅读 · 0 评论 -
【C++ STL】详解栈(stack)、队列(queue)的使用和模拟
栈(stack)又称堆栈,是一种被限定仅在表尾进行插入和删除操作的线性表。对于栈来说,能进行插入和删除操作的一段称为栈顶(top),另一端称为栈底(bottom),且栈的修改操作是按照“后进先出”(Last In First Out, LIFO)的原则进行的。栈的示意图如下所示:与vector和list不同的是,stack是一种容器适配器。有了栈的介绍后,队列就很好理解了。它只允许在队尾插入队头删除,即“先进先出”原创 2024-05-27 23:02:29 · 1727 阅读 · 0 评论 -
【C++ STL】list容器的简单模拟实现
在vector容器的简单模拟实现中,我们构造了一个简单的vector容器,那相比于其它的容器,vector有哪些优势呢?vector的元素是连续存储的,所以vector的遍历速度非常快。访问下一个元素,不需要利用指针间接寻址,这使得vector元素的线性扫描(find()和copy())接近最优。vector支持简单且高效的随机访问,这使得vector上的很多算法(如sort()和)非常高效。vector在oj题目里有一个比较常用的用法:二维数组。原创 2024-05-23 00:05:44 · 1204 阅读 · 0 评论 -
详解C++中的string类
的C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。一般来说,类规范由两个部分组成。原创 2024-05-02 15:29:36 · 132 阅读 · 0 评论 -
【C++ STL】vector容器的简单模拟实现
vector是最常用的标准库容器。一个vector就是一个给定类型元素的序列,元素在内存中是连续存储的:vector的大小是可以动态改变的,而且它的大小会被容器自动处理。与其它动态序列容器相比(deque, list and forward_list), vector在访问元素的时候更加高效。它可以采用下标对元素进行访问,因此在末尾添加和删除元素相对高效,对于其它不在末尾的删除和插入操作,效率更低。构造函数声明接口说明vector()无参构造构造并初始化n个val拷贝构造。原创 2024-05-13 00:50:25 · 909 阅读 · 0 评论