Deque
-
#include<deque> using namesace std;
-
双端队列容器 :双向开口的连续线性空间;
-
擅长尾部和头部添加或删除元素:常数阶;
-
存储元素并不能保证所有元素都存储到连续的内存空间中;
-
deque 是动态的以分段连续空间组合而成(没有提供所谓空间保留 server 功能);
-
是分段连续内存空间,有中央控制,维持整体连续的假象;
-
deque 最大的工作就是维护分段连续的内存空间的整体性的假象,并提供随机存取的接口,避开了重新配置空间、复制、释放的轮回,代价就是复杂的迭代器架构;
-
[deque 接口函数介绍](C++ deque get_allocator用法及代码示例 - 纯净天空)。
Capacity
Name | Role | Notice |
---|---|---|
size | 返回矢量实际存储元素数目(实际数据量) | |
max_size | 返回矢量所能存储的最大的元素数目 | |
resize | 更改矢量实际存储,指定长度若变长则默认填充新位置,变短则删除超出长度的元素 | |
empty | 判断矢量存储是否为空 | |
shrink_to_fit | 请求降低存储使得 capacity 和 size 匹配 |
Element access
Name | Role | Notice |
---|---|---|
operator[ ] | 下标访问元素 | 越界不抛出异常,直接报错 |
at | 返回索引所指的元素 | 如果越界则抛出 out_of_range |
front | 返回第一个元素 | |
back | 返回最后一个元素 |
Modifiers
Name | Role | Notice |
---|---|---|
assign | 将数据赋值给本身 | 拷贝 n 个 elem :assign(n, elem) 拷贝区间数据:assign(beg, end) |
push_back | 在容器尾部添加一个元素 | |
push_front | 在容器头部添加一个元素 | |
pop_back | 删除容器最后一个元素 | |
pop_front | 删除容器第一个元素 | |
insert | 指定位置插入元素的拷贝 | 插入一个并返回位置:insert(pos, elem) 插入 n 个:insert(pos, n, elem) 插入区间 [ ) :insert(pos, beg, end) |
erase | 删除指定数据,返回下一个数据的位置 | 删除区间 [ ) :erase(beg, end) 删除指定位置:erase(pos) |
swap | 交换另一相同类型的双端队列的内容 | |
clear | 移除容器所有数据 | |
emplacec11 | 指定位置直接构造生成一个元素 | |
emplace_frontc11 | 容器头部生成一个元素,直接构造,减少复制移动 | |
emplace_backc11 | 容器尾部生成一个元素,直接构造,减少复制移动 |
Allocator
Name | Role | Notice |
---|---|---|
get_allocator | 获取容器双端队列的分配器 |
Notice
-
相比 vector ,增加了头部添加和删除的成员函数,同时删除了 capacity( )、reverse( )、data( ) 成员函数;
-
swap(deque1, deque2) :交换存储相同类型的元素,功能相同,语法不同;