1、元素在顺序容器中的顺序与其加入容器时的位置相对应;
关联容器中元素的位置由元素相关联的关键字决定;
所有容器类都共享公共的接口,不同容器按照不同的方式对其拓展,基于某种容器学习的内容也适用于其他容器;
每种容器都提供了不同的性能和功能的权衡。
2、一个容器就是某些特定类型的对象的集合。顺序容器为程序员提供了控制元素存储和访问顺序的能力。
这种顺序不依赖于元素的值,而与元素加入容器时的位置相对应。
3、顺序容器的类型描述:
vector: 可变大小数组,支持快速的随机访问。在尾部的位置插入/删除操作速度很快
deque: 双端队列,支持快速随机访问,在头尾插入删除很快
list: 双向链表,只支持双向链表访问。在list中任何位置插入删除都很快。
forward_list:单向链表,只支持单项顺序访问,在链表任何位置插入删除都很快
array:固定大小数组,支持快速随机访问,不能添加或删除元素
string:与vector相似的容器,专门用于保存字段,随机访问快,在尾部插入删除速度快
各自特点:
1、string和vector将元素存放在连续的内存中,在删除和添加以后会导致后面的元素集体移动来保证内存地址的连续性,会导致添加和删除会非常耗时。
2、list和forward_list两个容器设计的目的是让容器任何位置的添加和删除都非常快,但是不支持元素的随机访问(为了访问一个元素,需要遍历整个容器)
3、deque:支持快速随机访问,但是在中间位置添加删除元素代价很高,在deque两端添加删除元素很快。
总结:除了固定大小的array以外,其他容器都提供高效灵活的内存管理,我们可以添加删除,扩张和收缩容器的大小