
C++ STL系列
文章平均质量分 92
北海有初拥
向更好的编程技能出发!
展开
-
【STL】红黑树的全面探索与红黑树的实现
红黑树节点的定义通常包含以下几个关键部分:红黑树的节点结构与二叉搜索树和AVL树差别不大,最大的差别就是加入了一个新的存储点——颜色因为⿊⾊节点的个数可以决定⼀条路径的⻓度,假设⿊⾊节点的个数为 h ,则最短路径的⻓度也为 h ,满⾜第⼆条规则时,红⾊节点的 个数不会超过⿊⾊节点( 1 个或者 h 个),从⽽最⻓路径的最⼤⻓度为 2h ,因为红⾊节点是在⿊⾊节点出现后才会出现。如果按照下图的插⼊⽅式导致红⾊节点连续出现违反了规则⼆,此时最短路径的⻓度的两倍会⼩于最⻓路径的⻓度,从⽽打破了红⿊树的平衡。原创 2024-08-28 17:22:11 · 1221 阅读 · 1 评论 -
【C++继承】赋值兼容转换&&作用域&&派生类的默认成员函数
由上面我们可以看到Person是父类,也称作基类。Student是子类,也称作派生类1.基类private成员在派⽣类中⽆论以什么⽅式继承都是不可⻅的,这⾥的不可⻅是指基类的私有成员还是被继 承到了派⽣类对象中,但是语法上限制派⽣类对象不管在类⾥⾯还是类外⾯都不能去访问它。2.(★)基类private成员在派⽣类中是不能被访问,如果基类成员不想在类外直接被访问,但需要在派⽣类中 能访问,就定义为protected。可以看出保护成员限定符是因继承才出现的。原创 2024-08-16 13:22:04 · 981 阅读 · 0 评论 -
priority_queue的介绍 && 仿函数
1.优先队列是⼀种容器适配器,根据严格的弱排序标准,它的第⼀个元素总是它所包含的元素中最⼤的。2.此上下⽂类似于堆,在堆中可以随时插⼊元素,并且只能检索最⼤堆元素(优先队列中位于顶部的元素)3.优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供⼀组特定的成员 函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。4.底层容器可以是任何标准容器类模板,也可以是其他特定设计的容器类5.标准容器类vector和deque满⾜这些需求。原创 2024-08-13 17:28:52 · 829 阅读 · 0 评论 -
【STL】stack/queue && 容器适配器 && deque
1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定 的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作。原创 2024-08-13 15:36:45 · 879 阅读 · 0 评论 -
【STL】list容器的深度剖析及底层实现
方式1:通过.操作符直接访问结构体的成员变量(一般不这样访问数据)。//ok方式2:通过重载->运算符,对结构体指针进行解引用。//ok。原创 2024-08-11 15:02:38 · 883 阅读 · 0 评论 -
【STL】 vector的底层实现
此外,insert的参数pos是对实参的拷贝,形参的改变不会影响实参,所以外部的实参也会失效,但是我们也不能通过引用传参,因为其迭代器返回的是临时拷贝具有常性不能通过引用传参,所以这里我们就可以通过控制insert函数的返回值来解决,我们会返回更新后的迭代器,这样就可以访问该位置了。使⽤reserve()函数可以更改调⽤对象的capacity的⼤⼩,注意,如果指定⼤⼩⼩于当前的capacity时,则不会做任何 处理。的问题(野指针),所以要提前规避,记录好pos相对位置,然后再即时。,否则就会出现随机值;原创 2024-08-05 20:02:20 · 1232 阅读 · 1 评论 -
【STL】String的底层构造
【代码】String的底层构造。原创 2024-08-05 12:06:26 · 548 阅读 · 8 评论