您的位置:首页 > 产品设计 > UI/UE

序列容器---vector,deque,list的区别

2009-12-15 17:47 399 查看
vector<T>

1.以类似于普通数组的方式存储类型为 T 的对象,只是它的容量可以根据需要存储的对象个数进行调整。

2.使用下标运算符[]可以像数组那样访问vector容器中的元素。

3.vector容器的大小是其中元素的个数--调用size()来获得容器的大小;

vector容器的容量是当前它可以包含的最大元素个数--调用capacity()来获得容器的大小。

(在创建特定容量的vector对象时,其大小和容量是相同的)

如:std::vector<int> a(10)

(如果给vector添加一个或多个元素,其大小就会以某个比例增长,以容纳新元素,所以其容量就会大于其大小,一定不会小于其大小)

4.只添加或删除序列尾的元素时,vector是最高效的。如果增大容量,vector会自动增长。

5.可以在vector的开头和中间插入和删除元素,但其效率相当低。

(因为需要移动插入或删除点后面的所有元素,插入时还得在自由存储区中分配一个新内存空间)

deque<T>

1.deque是double-ended queue的缩写,这是其主要特性。

2.可以使用下标运算符[]像数组那样访问deque容器中的元素。

3.deque容器的大小总是等于其容量--调用size()来获取的;deque容器没有capacity()这个成员函数。

4.deque优于vector容器的方面是可以在序列开头和末尾高效地添加或删除对象。

5.deque容器使用起来比vector容器略慢。在deque序列的中间可以添加或删除元素,但过程比较慢,因为总要复制已有元素。

list<T>

1.list容器在链表中存储类型为 T 的元素。在序列中存储元素,并能在序列的中间插入或删除元素时,就应使用list容器。

2.可以在序列的任意位置高效地插入和删除元素,无需移动已有元素。

3.list容器的主要限制是随机访问元素比较慢,因为这需要从list的第一个元素或最后一个元素开始遍历整个list,查找每个元素。

4.一般的STL sort()算法不能应用于list容器,因为它需要一个提供了随机访问元素功能的迭代器。

但是,仍可以使用内置的sort()函数对list容器的内容排序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: