0
点赞
收藏
分享

微信扫一扫

253-C++ STL deque 双端队列

juneyale 2022-03-13 阅读 69
C++

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 条评论