开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情
list结构
数据结构
- 节点数据结构为:list_node
- 类中实现iterator(因为此时进行++iter的时候需要迭代器智能的移动节点,而不只是简单的指针移动)
list_node中含有三部分数据:
- prev:指向上一个节点的指针
- next:指向下一个节点的指针
- data:数据
迭代器iterator的模版实现:
其中
self& operator++()指的是前置++(类比与++i)self operator++(int)指的是后置++(类比与i++)- 这里参数int的作用就是区分是前置++还是后置++
C++中不允许后置++加两次
具体原因不清楚,所以这就是为啥前置++,
self后面有&
注:上述list的实现为G2.9版本,list大小为4
G2.9与G4.9的区别
区别:
- literator实现中参数的个数:G2.9是三个,G4.9是一个,其具体是
&还是*在具体类中再实现 - G2.9中prev、next都是指向空指针,而G4.9则是指向自己(这就是为啥G2.9中size为4,而G4.9中size为8,因为前者只有一个空指针,后者则是两个指针,一个指针size为4)
G2.9与G4.9中list的实现不同
G2.9中list的实现
- list中只需一个类:node,具体实现类为
_list_node
G4.9中list的实现
- list继承于_list_base,_List_base的实现类为_List_impl....(实现较G2.9复杂,各有优缺点)