STL中各种容器效率

转自:http://cpluser.bokee.com/4105719.html

1.vector(动态数组)

vector支持随机存取。
vector在末端增加或删除元素时性能相当好,在前端或中部做以上操作则效率比较低,因为操作点以后的所有元素都需要移动到另外一个位置。因此,当要插入多个元素时,调用一次比调用多次效率快。
vector高效的原因在于配置了比其所容纳的元素更多的内存。内存重新配置会花很多时间。请关注capacity()成员函数。

2.deque(动态数组)

deque支持随机存取。
在deque的首端和末端插入和删除元素比较快,在中部插入和删除则比较慢。
deque的内存重分配性能比vector好。


3.list(双向链表)

list不支持随机存取。
list在任何位置安插和删除元素速度都比较快(双向链表)。
list的安插和删除操作不会使其他元素的各个pointer,reference,iterator失效。

4.set和multiset(平衡二叉树)

两者不支持直接存取元素的操作,因为是自动排序。
查找元素速度比较快。
不能直接改变元素值,否则会打乱原本正确的顺序。必须先下删除旧元素,再插入新的元素。

5.map和multimap(平衡二叉树)

基本同set。
根据已知的key查找元素速度比较快,根据value则比较慢。

posted @ 2013-01-02 14:02  Athrob  阅读(354)  评论(0编辑  收藏  举报