序列式容器 deque

hackchul 2004-08-27 01:14:29
Essential C++ 第78页 有这样一段:

《和 vector 不同的是,deque 对于最前端的安插和删除操作效率更高,末端元素亦同。》

什么叫末端元素亦同?是说对于末端元素的安插和删除操作效率一样高的意思吗?如果不是,下面还有一句话:

《如果我们需要在容器最前端安插元素,并执行末端删除操作,那么deque便很理想。》

谁告诉我 deque对前端元素的安插和删除效率如何,对末端元素的安插和删除效率又如何。
...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
北极猩猩 2004-08-30
  • 打赏
  • 举报
回复
通常deque是采用IT_Fly的方法实现的(至少在SGI STL中是这样)
北极猩猩 2004-08-30
  • 打赏
  • 举报
回复
注意STL对容器的内部实现并没有规定,只是规定了容器作特定操作时应有的时间和空间复杂度。

deque在头尾做插入时的时间复杂度都为1,而vector尾部插入是1,头部插入时n
bluejugar 2004-08-28
  • 打赏
  • 举报
回复
deque(double-ended-quene)是一个双端队列容器,其逻辑结构如下:
<-------------|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|------------->
它是一种随机访问的数据类型,由上可见,其在两端的插入和删除都比较迅速,所以"《和 vector 不同的是,deque 对于最前端的安插和删除操作效率更高,末端元素亦同。》",而vector的底层为数组实现,只是在尾部操作才有优势,所以"《如果我们需要在容器最前端安插元素,并执行末端删除操作,那么deque便很理想。》".
梧桐168 2004-08-28
  • 打赏
  • 举报
回复
deque是双向链表实现的?
不能这么说吧,它是由若干个固定大小的内存块串联的

steel007 2004-08-27
  • 打赏
  • 举报
回复
vector底层是用数组实现的,而deque是双向链表实现的
qwertasdfg123 2004-08-27
  • 打赏
  • 举报
回复
vector是单向进出,而deque是双向进出。

对于末端元素的安插和删除,操作效率vector和deque是一样的。

对于前端元素的安插和删除,deque是常数时间内完成。而vector需要移动后面所有的元素,效率自然就差了。
grooving 2004-08-27
  • 打赏
  • 举报
回复
栈的两端。没做过测试。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧