先来回顾一下,STL的组成
vector :
deque:(double -ended queue)顺序容器,双端队列,双向开口。
实际上是这样的,数据的存储是分段的,翻看C++的文档,说的是 deque 的元素不是相接存储
不管是从头插入,还是从尾插入 都很快
如果往中间插入元素,那么涉及到移动其他元素,效率会比较低
std::deque
(double-ended queue,双端队列)是有下标顺序容器,它允许在它的首尾两端快速插入及删除。另外,在 deque 任一端插入或删除不会使指向其余元素的指针或引用失效。
与 std::vector 相反,deque 的元素不是相接存储的:典型实现用单独分配的固定尺寸数组的序列,外加额外的登记,这表示下标访问必须进行二次指针解引用,与之相比 vector 的下标访问只进行一次。
#include <queue>
在标头 |
||
template< class T, |
(1) | |
namespace pmr { template< class T > |
(2) | (C++17 起) |
std::deque
(double-ended queue,双端队列)是有下标顺序容器,它允许在它的首尾两端快速插入及删除。另外,在 deque 任一端插入或删除不会使指向其余元素的指针或引用失效。
与 std::vector 相反,deque 的元素不是相接存储的:典型实现用单独分配的固定尺寸数组的序列,外加额外的登记,这表示下标访问必须进行二次指针解引用,与之相比 vector 的下标访问只进行一次。
deque 的存储按需自动扩展及收缩。扩张 deque 比扩张 std::vector 更优,因为它不涉及到复制既存元素到新内存位置。另一方面,