一、deque是是双端队列。
deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。
二、deque的接口就像list和vector的合体
deque可以像 list 一样使用头插(push_front)和头删(pop_front) 也可以像 vector 一样使用下标访问 [] 数据。
三、deque类似于一个动态的二维数组。
deque并不是真正连续的空间,而是由一段段连续的小空间拼接而成的,实际其底层结构如下图所示:
四、deque的缺陷
deque有一个致命缺陷:不适合遍历,因为在遍历时,deque的迭代器要频繁的去检测其
是否移动到某段小空间的边界,导致效率低下,而序列式场景中,可能需要经常遍历,因此在实
际中,需要线性结构时,大多数情况下优先考虑vector和list,deque的应用并不多,而目前能看
到的一个应用就是,STL用其作为stack和queue的底层数据结构。