c++ vector 为什么不支持pop_front
c++ 的vector不支持pop_front,难道是觉得效率不高,速度慢,那为啥支持insert,如果我在一开头插入一个元素,那效率还不是很低吗? 请高手赐教!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
c++ 的vector不支持pop_front,难道是觉得效率不高,速度慢,那为啥支持insert,如果我在一开头插入一个元素,那效率还不是很低吗? 请高手赐教!
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(9)
但效率很低,复杂度为O( n )
pop_front意味着你后面的所有元素都向前移一个地址,如果你的vector有10000000个元素,那你就死在这个函数上了。
拜托,最前最后的操作复杂度是o(1)好不好
@googler vector是连续存储的。。。。。
详见 think in C++第二卷 模板编程 用vector实现堆栈
我可以很负责任的告诉你vector是支持pop front
//
void popfront(vector<int > &aV)
{
if(aV.size()!=0)
aV.erase(0);
}
vector是连续存储的(数组实现),便于随机访问,不便于插入元素,插入元素效率较低,如果插入可以插入到末尾,如果经常插入,建议用list(list不是连续存储的,链表实现),便于插入删除,不善于随机访问
性能上可能是一方面,安全性可能也是要考虑的
vector是连续存储的(数组实现),便于随机访问,不便于插入元素,插入元素效率较低,如果插入可以插入到末尾,如果经常插入,建议用list(list不是连续存储的,链表实现),便于插入删除,不善于随机访问