STL其他内容解析:关于C++中STL的理解和应用
目录
List概述
List和Vector都是STL的顺序容器,唯一不同的地方就在于:Vector是一段连续的内存空间,List则是一段不连续的内存空间,相比于Vector来说,List在每次插入和删除的时候,只需要配置或释放一个元素空间,对于任何位置的插入和删除操作,List永远能做到常数时间。但是,List由于不连续的内存空间,导致不支持随机寻址,所以尺有所长寸有所短,在程序中选择使用那种容器还要视元素的构造复杂度和存取行为而定。
List的节点
List的节点结构如下:
template < class T>
struct __list_node{
typedef void* void_pointer;
void_pointer next; //型别为void*,也可以设为__list_node<T>*
void_pointer prev;
T data;
};
从节点结构可以看出,List就是一个双向链表,其结构如下图所示:
List的迭代器
在Vector中,由于是连续的存储空间,支持随机存取,所以其迭