253-C++ STL deque 双端队列

1.双端队列

双端队列就是两端都可以进行入队和出队,既可以在头部插入和删除数据,也可以在尾部插入和删除数据

2.双端队列中在面试中问的比较多

面试会问:双端队列是如何设计的?
在这里插入图片描述
3.双端队列在内存中是如何布局的?

有两个迭代器start和finish,每个迭代器中都有cur指针指向下一次插入数据的位置,first指针指向缓冲块的第一个元素(不管有没有数据都是指向第一个位置),last指针指向缓冲块的最后一个元素(不管有没有数据都是指向最后一个位置),node指针指向当前缓冲块节点,start迭代器指向所有缓冲块的第一个缓冲块的位置,finish迭代器指向最后一个缓冲块的位置

虽然缓冲块之间并不是连续的,但是可以通过两个迭代器让他们逻辑上是连续的

4.当继续push_back()6、7、8后,再push_back(9)会发生什么?也就是空间满了,会发生什么?
在这里插入图片描述
在这里插入图片描述
同样,也可以push_front在前面插入,当空间不够时,在前面块开始插入数据,注意在块中插入是从后往前插入的
在这里插入图片描述
5.deque和vector的区别
在这里插入图片描述
6.队列的头文件是#include ,双端队列的头文件是#include

7.双端队列从一个缓冲块到另一个缓冲块之间是如何做到迭代的?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值