结构模型
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/23087016845bb7a49ae3a652134594d1.png)
可以看到是一个双向串列的结构。
头文件<List>
List的能力
Lits对象自身提供了两个指针,用来指向第一个和最末一个元素,每个元素都有指针指向前一个和下一个元素,下面是List追加一个元素时的内部结构变化:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/923a8417e3c554f6688ce908964607d2.png)
与array、vector、deque不同的几个主要方面:
1.不支持随机访问,如果你要访问第五个元素,就得顺着串联一个个爬过前4给元素. list中随机访问元素是很慢的行为.但访问第一个或最后一个元素的速度很快
2.任何位置上元素的插入和删除都很快,始终都是常量时间内完成,因为无须移动任何其他元素
3.插入和删除动作不会造成指向其他元素的指针、迭代器和引用失效
4.提供front()、push_front()、pop_front()、back()、push_back()和pop_back()等操作函数
5.不提供下标操作符,也不提供at()
6.不提供容量、空间重新分配等操作函数,每个元素有自己的内存,在元素被删除之前一直有效
7.list提供不少特殊成员函数,专门用于移动和移除元素,这些函数执行起来更快速,无须复制或搬迁元素.
List的操作
构造函数和析构函数
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c39db9890758d3cd42c8e3aae266d9de.png)
比较
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/97c50c88efe10d0f8a04887e39c3981b.png)
赋值操作
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/29f8b1ec7bf4e235f7d83bc1283ee7ac.png)
元素访问
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0404bfd989a2245afcec619fc03fb16e.png)
迭代器相关函数