一、list的介绍
1、list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代
2、list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素
3、list和forward_list非常相似,最主要的不同在于forward_list是单链表,只能朝前迭代,让其更简单高效
4、与其他序列式容器(vector、array、deque)相比,list通常在任意位置进行插入、移除元素,执行效率更好
5、与其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的随机访问,必须从头部或者尾部迭代到该位置
二、list的介绍
2.1 定义
2.2 使用
注意:
1、begin和end为正向迭代器,对迭代器执行++操作,迭代器向后移动
2、rbegin和rend为反向迭代器,对迭代器执行++操作,迭代器向前移动
2.3 Capacity
2.4 Element access
2.5 Modifiers
三、list的迭代器失效
迭代器失效即迭代器所指向的节点无效,即该节点被删除了。因为list的底层结构是带头节点的双向循环链表,因此在list中进行插入时是不会导致list的迭代器失效的,只有在删除时才会失效,并且失效的只是指向被删除节点的迭代器,其他迭代器不会受到影响。
四、list与vector的区别
vector与list都是STL中非常重要的序列式容器,由于两个容器的底层结构不同,导致其特性与应用场景不同,最主要的区别如下: