18 容器之list探索(学自Boolean)
来源:互联网 发布:教育网络策划方案 编辑:程序博客网 时间:2024/05/19 02:44
1、概述
本篇主要在之前的基础上,更加深入的介绍STL中的双向链表容器List,包括List类模板、迭代器iterator等。
2、List的结构
1)容器List是双向链表的结构,如下:
解析:
a、List是环状的链式结构,在链表最后有块空白节点用于实现容器的前闭后开区间,用end()方法返回。
b、链表中包含迭代器node,里面包含操作符重载,如++来实现每个链表元素向指向下一个节点。
2)G2.9链表结构
说明:容器list中复合一个_list_node<T>,而_list_node<T>是链表中数据,包括两个指向自身的指针和存放的数据。
链表list的模板类,如下:
链表中复合的_list_node<T>数据,如下:
链表中的迭代器(是类迭代器),如下:
注意点:
a、类迭代器中通过5种typedef和操作符重载实现对node的操作,而node正是指向链表数据_list_node<T>;
b、如通过List<Foo>::iterator ite声明迭代器,Foo类型就是data数据对象,可以通过*ite取得Foo对象。
3、G2.9与G4.9的差异
注意点:
a、G4.9List容器设计的迭代器类模板参数只有一个,其它两个都是在类中具体表示,这样比较简洁;
b、G2.9设计的数据node中的prev和next指向是void*,而实际上是指向node本身,并在G4.9中以这种方式实现。
阅读全文
0 0
- 18 容器之list探索(学自Boolean)
- 20 容器vector的深度探索(学自Boolean)
- 21 容器deque&queue&stack深度探索(学自Boolean)
- 15 STL中容器双向链表list和单向链表forward_list(学自Boolean)
- 22 rb_tree&set&map深度探索(学自Boolean)
- 23 hashtable&unordered_set&unordered_map深度探索(学自Boolean)
- 13 STL中数组容器array(学自Boolean)
- 14 STL中容器vector(学自Boolean)
- 16 STL集合和映射容器set/multiset_map/multimap(学自Boolean)
- 17 分配器Allocator和容器间的关系(学自Boolean)
- 32 moveable元素对于容器速度的影响(学自Boolean)
- 26 函数适配器binder2nd(学自Boolean)
- 28 迭代器适配器(学自Boolean)
- 30 hash function(学自Boolean)
- 09 C++Reference引用的用法(学自Boolean)
- 10 C++中的对象模型object model(学自Boolean)
- 11 关于C++中的new和delete(学自Boolean)
- 19 迭代器iterator的设计原则(学自Boolean)
- 自顶向下
- 移动WEB--仿手机原生相册(Vue版)
- Jmeter关联方式使用
- MySQL 5.7 复制原理简介
- 实验2 Linux用户管理
- 18 容器之list探索(学自Boolean)
- java 线程池的实现类之ThreadPoolExecutor
- !
- 结合redis设计与实现的redis源码学习-18-网络连接库(networking.c)
- 运维小结之命令初探
- JVM高CPU定位脚本
- 方法匹配
- RESTful是什么,为什么用,怎么用
- JSP基础(二十三)——函数标签