首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为何vector没有pop_front()函数

2013-08-01 
为什么vector没有pop_front()函数?deque/list都有这个函数![解决办法]应该是鉴于效率问题吧。不同的容器各

为什么vector没有pop_front()函数?
deque/list都有这个函数!
[解决办法]
应该是鉴于效率问题吧。不同的容器各有各的特点和优势,不能说这个有这个函数那个也得有。
[解决办法]
vector类似于数组,而list与deque类似于链表。
数组自然不会有pop_front(),vector作用就是随机存取,删除操作并不是它的长处,所以没有那个函数。
list与deque既然是基于链表实现的,pop_front的复杂度为O(1).
主要还是因为这几种容器的应用场景不同导致的。
[解决办法]
删除操作只需要移动一下vector的_Last指针吧或者使用erase函数
[解决办法]
deque/list的push_front使用堆来操作的,用的是指针,插入方便,效率高
vector用下标访问即可,在频繁的插入和删除 效率比较低
[解决办法]
这就是vector不能取代list/deque的原因.stl中容器各有所长,也必有其缩短。 
[解决办法]

引用:
这就是vector不能取代list/deque的原因.stl中容器各有所长,也必有其缩短。 

缩短-->所短。 
[解决办法]
这就是数组与链表的区别,一个适合随机存取,一个是链表,插入删除操作效率很高,,但是对于数组的随机存储来说,频繁的插入删除操作,需要移动空间,效率远远不如链表。
[解决办法]
这个我觉得可以从vector的实现上来看
1 实现形式:vector的内部是数组的形式,虽然pop_front不会影响其效率,但是对其处理时一个困难
2 内存管理:对于其管理内存来说还是比较困难的。就好像你申请了一个数组,你可以输出第一个成员,但是你pop第一个成员你怎么进行处理,处理了之后你怎么处理你的内存??貌似vector的内存都是动态申请的!你怎么释放内存呢?
3 实现理念:vector模拟的是栈的功能,你觉得栈能从前面出来吗?栈都是先进后出,后入先出的!实现一个那个函数可以很简单,却打破了他的初始理念。
所以你懂得!
[解决办法]
if vector has pop_front and push_front, then what's the difference between vector and deque?

热点排行