温习C/C++笔记(3)——Vector和List的区别

1.Vector容器

vector 是一种顺序容器,它的元素被存储在一段连续空间中。vector是作为一种动态数组实现的,
和普通的数组一样,它的元素被存储在一段连续的空间中,因此不仅可以通过迭代器访问元素,
而且可以通过某个元素的指针加上一个偏移量进行访问。
vector的大小是自己维护的,用户完全不需要关心其大小,它会根据需要对数组的大小进行扩充。
Vector的有点主要有:
1.可以通过小标访问元素(O(1))。
2.使用迭代器以任何顺序访问元素,正序或者逆序(O(n))。
3.可以在尾部添加或者删除元素(O(1))
当vector的空间不够时,会自动扩充大小。通常是重新分配一段2倍于原来空间大小的连续内存,
并将原来的数据拷贝到新的位置,释放原来的空间。
和其他标准容器(deque ,list)相比,vector通常是随即存取元素最快的容器,然而,对于插入和删除
操作的效率就不如deque和list.

2.List容器

list也是一种顺序容器,不过它并不像vector一样被存储在一段连续的内存空间中,而是组织成为
一个双向链表
list的所占内存空间是不连续的,这也决定我们不能通过下表存取元素。
List的有点有:
1.高效地插入和删除操作(O(1)).
2.高效地移动元素或者元素块,可以在一个容器内进行也可以在不同的容器之间进行。(O(1))
3.从前向后或者从后向前地迭代存取元素。(O(n))

相比之下,list在执行元素的插入删除以及移动等操作时效率很高,如果在程序中大部分是用到插入
和删除以及移动操作,那么list将是一个不错的选择。
list主要的不足之处就是缺少通过位置直接村群元素的方式。

posted @ 2012-08-06 21:18  dancingrain  阅读(230)  评论(0编辑  收藏  举报