侯捷STL学习(六)--深入list && Iterator traits
第十三,四节 深度探索list(上,下)
-
list Gnu2.9源代码实现 -
注意
node代码和图示的位置 -
实现前闭后开,增加一个空白节点

-
用的分配器alloc
-
Iterator智能指针,需要知道结点node的next指针 -
除了array和vector,其他容器的iterator都是一个class
-
iteratorclass 实现

- 必须做至少5个
typedef,很多操作符重载 - 前++
++i其中i作为对象,self& operator++(){}返回引用,这样可以进行两次前++ - 后++
i++self operator++(int){},阻止两次后++ ++++i对的++(++i);不允许两次后++(i++)++

list的迭代器解引用,不像vetor直接是数据,而是(*iter).dataGnu 4.9的改善地方,下图中有说明:链表指向自己

- G4.9类之间的关系变得复杂

第十五节 迭代器的设计原则和Iterator Traits的作用与设计
Iterator需要遵循的原则,必须提供5种associated types- 算法向iterator提问,获得一些类型type,方便处理

-
问答式

-
Traits特性,特质

-
算法的参数,可能是iterator或者普通指针,通过中间层traits实现
-
算法执行时,根据传入的参数,选择相应的
iterator_traits


-
标准库中还有其他的traits:
type traits , char traits, allocator traits, pointer traits, array traits等
C/C++基本语法学习
STL
C++ primer


浙公网安备 33010602011771号