标签:
容器的选用:
元素是否是连续的存储主要影响下面两个方面:
(1)在容器中间位置的元素的添加和删除
(2)容器元素的随机访问的代价
vector和deque容器:提供了对元素的快速随机访问,但是付出的代价是在中间删除或者添加元素比在末尾要开销大的多
list容器:在任何位置都可以快速随机删除和添加,单是付出的代价是随机访问的开销大的多
1)list:不连续的内存单元,允许向前向后逐个的遍历元素,在任何地方都可以高效的insert和erase元素,但不支持随机
访问。访问时需要遍历其他的元素
2)vector:除了在尾部之外,在其他任何地方插入或者删除元素都需要移动改元素右边的所有元素,
3)deque:拥有更加复杂的数据结构,在deque的两端插入和删除元素都比较快,在中间插入或删除代价比较高。
与vector一样在中间插入或删除效率低
与vector不一样它在前面插入或删除效率也很高
与vector一样而与list不一样,支持随机访问
deque在首部或尾部插入不会使任何迭代器失效,而删除只会使当前那个元素的迭代器失效。
而在其它位置则会使所有的迭代器都失效。
选用时:
要求随机访问,选用vector或者deque
若必须在中间插入或删除,选择list
若只是在头部或尾部插入或删除,则选用deque
一般没有特别要求时,都选用vector
标签:
原文地址:http://www.cnblogs.com/yanliang12138/p/4711738.html