C++ STL 体系结构与内核分析(四)STL六大部件-容器结构与分类/List/迭代器设计原则

容器结构与分类

标准库里面很少继承。两个容器之间有关系,但是是复合关系没有继承关系。

容器List

双向链表/单链表,里面又一个list_node节点,data是绿色部分,还有向前向后指针void* void_point,iterator是下图红点,因为链表是不规则空间,不能使用单向链表,使用快慢指针

iterator用法:在list取iterator,下面是指针操作 ++/*/->,一大堆的操作符重载

过程

前进一个节点操作:node取出next指针指向prev下一个节点。四个+,C++不允许后面做两次++;

提取动作:

通过绿色node得到节点取data.

新版本设计:修正了很多不好的地方

蓝色部分是空虚节点,他的sizeof就是这个。

迭代器设计原则

调用主线:黑色圈1/2/3,iterator需要遵循的原则:黄色部分1/2/3

五种类型:红色字体部分

输入的类型,得到五种类型

根据输入T类型,进行偏特化,如上图所示。为了区分指针和iterator,提出完整iterator_traits

发布了176 篇原创文章 · 获赞 21 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_27262727/article/details/105180468