c++ vector 为什么不支持pop_front

知止YES 发布于 2012/04/02 23:20
阅读 4K+
收藏 0
c++ 的vector不支持pop_front,难道是觉得效率不高,速度慢,那为啥支持insert,如果我在一开头插入一个元素,那效率还不是很低吗? 请高手赐教!
加载中
1
wang11chao01
wang11chao01
vector是连续存储的(数组实现),便于随机访问,不便于插入元素,插入元素效率较低,如果插入可以插入到末尾,如果经常插入,建议用list(list不是连续存储的,链表实现),便于插入删除,不善于随机访问
0
知止YES
知止YES
性能上可能是一方面,安全性可能也是要考虑的
0
知止YES
知止YES

引用来自“wang11chao01”的答案

vector是连续存储的(数组实现),便于随机访问,不便于插入元素,插入元素效率较低,如果插入可以插入到末尾,如果经常插入,建议用list(list不是连续存储的,链表实现),便于插入删除,不善于随机访问
谢谢。是啊,假如支持的话,那么这个算法的复杂度为 O(n)。
0
小熊猫大暴走
小熊猫大暴走

我可以很负责任的告诉你vector是支持pop front

//

void popfront(vector<int > &aV)

{

    if(aV.size()!=0)

    aV.erase(0);

}

0
小熊猫大暴走
小熊猫大暴走
详见 think in C++第二卷 模板编程 用vector实现堆栈
wang11chao01
wang11chao01
@googler vector是连续存储的。。。。。
小熊猫大暴走
小熊猫大暴走
@wang11chao01 : 拜托,最前最后的操作复杂度是o(1)好不好
wang11chao01
wang11chao01
但效率很低,复杂度为O( n )
0
f
for_on
pop_front意味着你后面的所有元素都向前移一个地址,如果你的vector有10000000个元素,那你就死在这个函数上了。
返回顶部
顶部