第十三,四节 深度探索list(上,下)
-
源代码实现list Gnu2.9
- 注意
代码和图示的位置node
- 实现前闭后开,增加一个空白节点
- 用的分配器alloc
-
智能指针,需要知道结点node的next指针Iterator
- 除了array和vector,其他容器的iterator都是一个class
-
class 实现iterator
- 必须做至少5个
,很多操作符重载typedef
- 前++
其中i作为对象,++i
返回引用,这样可以进行两次前++self& operator++(){}
- 后++
i++
,阻止两次后++self operator++(int){}
-
对的++++i
;不允许两次后++++(++i)
(i++)++
-
的迭代器解引用,不像vetor直接是数据,而是list
(*iter).data
-
的改善地方,下图中有说明:链表指向自己Gnu 4.9
- G4.9类之间的关系变得复杂
第十五节 迭代器的设计原则和Iterator Traits的作用与设计
-
需要遵循的原则,必须提供5种Iterator
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