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.双端队列从一个缓冲块到另一个缓冲块之间是如何做到迭代的?