deque类
基础介绍
deque
是双端队列,它提供了和vector
类似的接口但是底层的实现与vector
完全不同,vector
底层用三个指针指向数组的起点,尾部和总容量的尾部,并且所有元素都是连续的,但是在deque
中所有元素并不一定都是在连续的内存空间上的。deque
在底层实现上是将一个连续的空间分段进行管理,并将它们的首地址用一个指针数组进行管理,这样特殊的存储结构使得它在头部和尾部增加元素比vector
更加高效,但是底层实现更为复杂,存储了很多额外信息。如果抛去在头部和尾部增加元素,在中间任意位置添加元素,它的效率比vector更高,但是比list要低。
常用接口
构造函数
deque(); //构造空的双端队列
deque(size_type n, const value_type &val = value_type()); //用n个值为val的元素构造双端队列
deque(InputIterator first, InputIterator last); //用[first, last)的区间构造双端队列
deque(const deque &x); //双端队列的拷贝构造函数
迭代器相关
由于deque
在内存上并不完全是连续的因此想要保持deque的连续性,这个任务就落到了迭代器身上。在底层实现上,deque
将一段一段连续的内存称为一个缓冲区(buffer),并将这些缓冲区的首尾地址