容器结构与分类

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

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

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

容器List

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

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

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

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

过程

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

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

提取动作:

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

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

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

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

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

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

迭代器设计原则

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

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

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

五种类型:红色字体部分

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

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

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

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

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

相关文章:

  • 2021-12-19
  • 2021-10-30
  • 2021-10-07
  • 2021-09-15
  • 2021-04-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-22
  • 2022-01-01
  • 2021-07-07
  • 2021-05-04
  • 2021-04-06
  • 2021-10-08
  • 2021-07-31
相关资源
相似解决方案