简介
Deque是 D ouble E nded Que ue的首字母缩写.它是一个序列容器,可以改变它的大小运行时. Container是一个保存相同类型数据的对象.序列容器严格按线性顺序存储元素.
deque的元素可以分散在不同的内存块中.容器存储必要的信息,以允许在恒定时间内直接访问任何元素.与向量不同,deque不能保证将所有元素存储在连续的内存位置.因此,它不允许通过偏移指针直接访问数据.但它允许使用下标operator []直接访问任何元素.
Deque可以在运行时根据需要从两端收缩或扩展.存储要求由内部分配器自动完成. Deque提供与向量类似的功能,但提供了从任何一端插入和删除数据的有效方法.
零大小的deques也是有效的.在这种情况下,deque.begin()和deque.end()指向同一位置.但调用front()或back()的行为是未定义的.
定义
以下是来自< deque>的std :: deque的定义头文件
template < class T, class Alloc = allocator> class deque;
参数
T : 包含的元素的类型.
T可以被任何其他数据类型替换,包括用户定义的类型.
Alloc : 分配器对象的类型.
默认情况下,使用allocator类模板,该模板定义了最简单的内存分配模型,并且与值无关.
成员类型
以下成员类型可用作参数或按成员函数返回类型.
Sr.No. | 成员类型 | 定义 |
---|---|---|
1 | value_type | T(模板的第一个参数) |
2 | allocator_type | Alloc(模板的第二个参数) |
3 | reference | value_type& |
4 | const_reference | const value_type& |
5 | pointer | value_type * |
6 | const_pointer | const value_type * |
7 | iterator | 随机访问iterator到value_type |
8 | const_iterator | 随机访问迭代器到const value_type |
9 | reverse_iterator | std :: reverse_iterator< iterator> |
10 | const_reverse_iterator | std :: reverse_iterator< const_iterator> |
11 | size_type | size_t |
12 | difference_type | ptrdiff_t |
来自< deque>
的函数
下面是升来自< deque>的所有方法的ist标题.
构造函数
Sr.No. | 方法&说明 |
---|---|
1 | deque::deque 默认构造函数 构造一个零元素的空双端队列. |
2 | deque :: deque fill constructor 用 n 构造一个新的双端队列元素并将 val 分配给deque的每个元素 |
3 | deque :: deque 范围构造函数 使用 first 到 last 范围内的元素构造一个双端队列. |
4 | deque :: deque 复制构造函数 构造一个带有现有容器中每个元素副本的双端队列. |
5 | deque::deque move constructor 使用move语义构造一个包含其他内容的双端队列. |
6 | deque :: deque 初始化列表构造函数 从初始化列表构造一个双端队列. |
析构函数
Sr.No. | Method&说明 |
---|---|
1 | deque::deque 通过释放内存来销毁deque对象. |
成员函数
Sr.No. | Method&说明 |
---|---|
1 | deque::assign 范围版本 通过替换旧元素为deque元素分配新值. |
2 | deque :: assign fill version 通过替换旧元素为deque元素赋值. |
3 | deque :: assign 初始化列表版本 通过替换旧元素为deque元素赋值. |
4 | deque :: at 返回对当前元素的引用在deque的位置 n . |
5 | deque :: back 返回对最后一个的引用deque的元素. |
6 | deque :: begin 返回指向双端队列的第一个元素的随机访问迭代器. |
7 | deque :: cbegin 返回一个指向双端队列开头的常量随机访问迭代器. |
8 | deque :: cend 返回一个指向双端队列开头的常量随机访问迭代器. |
9 | deque::clear 通过删除双端队列中的所有元素并将双端队列的大小设置为零来销毁双端队列. |
10 | deque::crbegin 返回一个指向容器反转器开头的常量反向迭代器. |
11 | deque :: crend 返回一个指向双端队列反向末端的常量反向迭代器. |
12 | deque :: emplace 通过在位置插入新元素来扩展容器. |
13 | deque :: emplace_back 在双端队列末尾插入新元素. |
14 | deque :: emplace_front 在deque开头插入新元素. |
15 | deque :: empty 测试deque是否为空. |
16 | deque :: end 返回指向 |
17 | deque :: erase position version 从双端队列中删除单个元素. |
18 | deque :: erase 范围版本 从双端队列中删除单个元素. |
19 | deque ::front 返回对双端队列的第一个元素的引用 |
20 | deque :: get_allocator 返回与deque关联的分配器 |
21 | deque :: insert single elemen t version 通过在位置插入新元素来扩展容器. |
22 | deque :: insert fill version 通过在容器中插入新元素来扩展容器. |
23 | deque :: insert 范围版本 通过在容器中插入新元素来扩展容器. |
24 | deque :: insert 移动版本 通过在容器中插入新元素来扩展容器. |
25 | deque :: insert 初始化列表版本 通过在容器中插入新元素来扩展容器. |
26 | deque :: max_size 返回deque可以保留的最大元素数. |
27 | deque :: operator = copy version 通过替换旧的内容为deque分配新的内容,并在必要时修改大小. |
28 | deque :: operator = 移动版本 通过替换旧的内容为转义分配新内容,并在必要时修改大小. |
29 | deque :: operator = 初始化列表version 通过替换旧的内容为deque分配新的内容,并在必要时修改大小. |
30 | deque :: operator [] 返回对 n 位置处元素的引用. |
31 | deque :: pop_back 从双端队列中删除最后一个元素,并将双端队列的大小减一. |
32 | deque :: pop_front 从deque中删除第一个元素并减小deque b的大小y one. |
33 | deque :: push_back 在双端队列末尾插入新元素,并将双端队列的大小增加一. |
34 | deque :: push_back 移动版本 在双端队列末尾插入新元素并增加大小deque by one. |
35 | deque :: push_front 在双端队列的前面插入新元素,并将双端队列的大小增加一. |
36 | deque :: push_front 移动版本 插入新的e在deque前面释放并且将双端队列的大小增加一. |
37 | deque :: rbegin 返回指向的反向迭代器到deque的最后一个元素. |
38 | deque :: rend 返回反向迭代器,指向反向结尾deque. |
39 | deque :: resize 更改双端队列的大小. |
40 | deque :: resize value version 更改deque的大小. |
41 | deque :: shrink_to_fit 请求容器减少容量以适应其大小. |
42 | deque :: size 返回元素数量deque. |
43 | deque :: swap 将deque的内容与另一个deque的内容进行交换 x . |
非会员超载功能
Sr.No. | 方法&说明 |
---|---|
1 | operator== 测试两个deques是否相等. |
2 | operator!= 测试两个deques是否相等. |
3 | operator< 测试第一个deque是否小于其他deque. |
4 | operator< = 测试第一个双端队列是否小于或等于其他与否. |
5 | operator> 测试第一双端队列是否大于其他双端队列。 |
6 | operator> = 测试第一个deque是否大于或等于other. |
7 | swap 交换两个双端队列的内容. |