C++--双端队列deque

本文探讨了C++中的双端队列deque,它结合了vector和list的功能,如头删头插、尾插尾删和随机存取。然而,deque并不能完全替代vector和list,因为其随机存取效率不高且不适合大量中间插入删除。deque作为栈和队列的默认容器,得益于其内部结构——多个连续空间,提供更好的空间缓存利用率。通过分析deque的底层结构,包括迭代器start和finish以及内部的中控指针数组,可以更深入地理解deque的工作原理。
摘要由CSDN通过智能技术生成

双端队列这个结构 ,总是作为stack和queue容器适配器的默认模板参数类型,它的功能很丰富,头删头插,尾插尾删,随机存取等等,看起来就是vector和list的合体。为什么这么说呢?

优点 缺点
vector 1.随机访问 2.尾插 头、中部插入删除
list 任意位置插入删除 随机访问

那么在功能上,我们可以清楚的看到 deque = vector+list
真的是这样么?

结论:
1.deque不能替代vector和list
2.deque采用operator [ ] 来支持随机存取,但不适合大量的随机访问和中间的插入删除
3.deque作为栈和队列的默认适配容器 原因:栈和队列涉及头尾操作。

list当然也可以作为栈和队列的容器,但追究到deque底层我们可以得到,deque是多个连续的空间,而list是单个空间,这样,deque会使空间缓存利用率更好。

那究竟deque的底层结构究竟是怎样的呢?我们移步至源码看看吧

这是deque大致的物理结构
在这里插入图片描述
start和finish 作为迭代器,它的结构体内包含了四个变量:
cur、first、last、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值