![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++进阶
文章平均质量分 85
讲c++的内容进行升华,进阶。
Tom王要coding
5月4日
展开
-
C++进阶——哈希的实现
在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到O(log2N),即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。原创 2023-05-30 12:01:51 · 968 阅读 · 1 评论 -
C++进阶——map&set的实现
begin()与end()STL明确规定,begin()与end()代表的是一段前闭后开的区间,而对红黑树进行中序遍历后,可以得到一个有序的序列,因此:begin()可以放在红黑树中最小节点(即最左侧节点)的位置end()放在最大节点(最右侧节点)的下一个位置,关键是最大节点的下一个位置在哪块?能否给成nullptr呢?在这里我们不用设置一个循环迭代器,begin()直接就定义为最小的那棵树枝节点(最左节点),end()不是最右节点那棵树枝而是设置成空节点。原创 2023-05-21 17:05:11 · 715 阅读 · 1 评论 -
C++进阶——map&set的使用
7. map中的的元素是键值对8. map中的key是唯一的,并且不能修改9. 默认按照小于的方式对key进行比较10. map中的元素如果用迭代器去遍历,可以得到一个有序的序列11. map的底层为平衡搜索树(红黑树),查找效率比较高12. 支持[]操作符,operator[]中实际进行插入查找。原创 2023-05-19 13:29:09 · 470 阅读 · 2 评论 -
C++进阶——红黑树
enum color //定义颜色 {color _col;} };思考:在节点的定义中,为什么要将节点的默认颜色给成红色的?因为刚刚说的性质中第三条比第四条更好维护。原创 2023-05-17 11:08:07 · 322 阅读 · 0 评论 -
C++进阶——AVL树的构建
AVLTreeNode(const pair < k , v > & kv) //节点构造函数 : _left(nullptr) , _right(nullptr) , _parent(nullptr) , _kv(kv) , _be(0) {int _be;原创 2023-05-15 22:00:53 · 582 阅读 · 0 评论 -
C++进阶——二叉搜索树BST
C++进阶——二叉搜索树BST原创 2023-04-21 11:48:10 · 659 阅读 · 4 评论 -
C++进阶——类与对象(三)
但是,构造函数体中的语句只能将其称,而不能称作初始化。因为,而。原创 2023-03-31 16:23:27 · 256 阅读 · 1 评论 -
C++进阶——反向迭代器Reverse_iterator
之前我们学过适配器,但是只实现了普通的迭代器,可是反向迭代器没有实现,当时说之后会实现的,没错就是今日,我们要收复Reverse_iterator-----。我们其实可以封装一个反向迭代器库(Reverse_iterator.h),这样不管是什么容器(适配器)都可以使用了,减少了代码的冗余。原创 2023-04-05 18:34:24 · 797 阅读 · 3 评论 -
C++进阶——继承
*很多人说C++语法复杂,其实多继承就是一个体现。**有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。多继承可以认为是C++的缺陷之一,很多后来的面向对象语言都没有多继承,如Java。继承和组合public继承是一种is-a的关系。也就是说每个派生类对象都是一个基类对象。组合是一种has-a的关系。假设B组合了A,每个B对象中都有一个A对象。原创 2023-02-25 21:11:14 · 534 阅读 · 7 评论