1.1 基本概念
功能:将数据进行链式存储
链表是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的
链表的组成:链表由一系列结点组成
结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域
STL中的链表是一个双向循环链表
链表的优点:可以对任意位置进行快速插入或删除元素
缺点:容器遍历速度,没有数组快;占用的空间比数组要大
由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于双向迭代器 也就是说,不能由迭代器+数字的情况出现!只能一个一个来
list采用动态存储分配,不会造成内存浪费和溢出
list有一个重要的性质,插入操作和删除操作都不会造成原有list迭代器的失效,这在vector中式不成立的
(因为vector容器的插入,会另外选择一块更大的内存空间,并把整体“搬”过去,而之前的迭代器还指向的是之前的那一块内存,因此也就失效了)
总结:STL中list和vector是两个最常被使用的容器,各有优缺点