vector list两种不一样的容器

vector list 其实两者是不一样的数据结构罢了。数据结构

vector :线性数据结构;list:链式数据结构。性能

线性结构易于访问数据元素,链式结构易于插入新的元素。索引

vector容器为了支持快速随机的访问,其数据元素以连续的方式存放的。当插入一个新的元素时,若是容器中没有多余的内存空间存储这个新元素,而元素必须以连续的方式存储以便索引访问。那么vector容器必须从新分配内存空间。原有的内存空间中的元素被复制到新的内存空间中,接着插入新的元素,最后销毁旧的内存空间。如过vector容器每次在插入新的元素时,都从新分配和撤销内存空间,其性能是至关慢的。内存

list容器在插入一个新的元素时,标准库只需建立一个新元素,而后把他链接在已存在的链表中。不须要建立新的内存空间,也不须要复制已存在的元素。效率

由此能够推论。通常而言,使用list容器优于vector容器。容器

但标准库的实现者使用这样的策略:以最小的代价连续存储元素,由此带来的访问元素的便利米不了存储的代价。链表

为了使vector容器实现快速的内存分配,其所分配的内存空间要比实际所需的多一次。vector容器预留了这些额外的存储区,用来存储新插入的元素。数据

所以在实际的应用中,vector容器比list容器、deque容器增加效率更高。内存分配