容器结构与分类
标准库里面很少继承。两个容器之间有关系,但是是复合关系没有继承关系。
容器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