- C 标准库
- C 标准库
- C++ 标准库
- C++ 库 - 主页
- C++ 库 - <fstream>
- C++ 库 - <iomanip>
- C++ 库 - <ios>
- C++ 库 - <iosfwd>
- C++ 库 - <iostream>
- C++ 库 - <istream>
- C++ 库 - <ostream>
- C++ 库 - <sstream>
- C++ 库 - <streambuf>
- C++ 库 - <原子>
- C++ 库 - <复杂>
- C++ 库 - <异常>
- C++ 库 - <功能>
- C++ 库 - <限制>
- C++ 库 - <语言环境>
- C++ 库 - <内存>
- C++ 库 - <新>
- C++ 库 - <数字>
- C++ 库 - <正则表达式>
- C++ 库 - <stdexcept>
- C++ 库 - <字符串>
- C++ 库 - <线程>
- C++ 库 - <元组>
- C++ 库 - <类型信息>
- C++ 库 - <实用程序>
- C++ 库 - <valarray>
C++ 库 - <双端队列>
介绍
Deque 是双端队列的缩写。它是一个序列容器,可以在运行时更改其大小。容器是保存相同类型数据的对象。序列容器严格按照线性顺序存储元素。
双端队列的元素可以分散在不同的内存块中。容器存储必要的信息,以允许在恒定时间内直接访问任何元素。与向量不同,双端队列不能保证将其所有元素存储在连续的内存位置。因此它不允许通过偏移指针直接访问数据。但它允许使用下标运算符 [ ] 直接访问任何元素。
双端队列可以在运行时根据需要从两端收缩或扩展。存储要求由内部分配器自动满足。Deque 提供与向量类似的功能,但提供了从任意一端插入和删除数据的有效方法。
零大小的双端队列也是有效的。在这种情况下, deque.begin() 和 deque.end() 指向同一位置。但是调用 front() 或 back() 的Behave是未定义的。
定义
以下是 <deque> 头文件中 std::deque 的定义
template < class T, class Alloc = allocator<T> > class deque;
参数
T - 所包含元素的类型。
T 可以替换为任何其他数据类型,包括用户定义的类型。
Alloc - 分配器对象的类型。
默认情况下,使用分配器类模板,它定义了最简单的内存分配模型,并且与值无关。
会员类型
以下成员类型可以用作成员函数的参数或返回类型。
先生。 | 会员类型 | 定义 |
---|---|---|
1 | 值类型 | T(模板的第一个参数) |
2 | 分配器类型 | Alloc(模板的第二个参数) |
3 | 参考 | 值类型& |
4 | 常量引用 | 常量值类型& |
5 | 指针 | 值类型* |
6 | 常量指针 | 常量值类型* |
7 | 迭代器 | value_type 的随机访问迭代器 |
8 | 常量迭代器 | const value_type 的随机访问迭代器 |
9 | 反向迭代器 | std::reverse_iterator <迭代器> |
10 | 常量反向迭代器 | std::reverse_iterator <const_iterator> |
11 | 尺码类型 | 尺寸_t |
12 | 差异类型 | ptrdiff_t |
来自 <deque> 的函数
下面是 <deque> 标头中所有方法的列表。
构造函数
先生。 | 方法及说明 |
---|---|
1 | deque::deque
默认构造函数
构造一个具有零元素的空双端队列。 |
2 | deque::deque 填充构造函数
构造一个包含n 个元素的新双端队列,并将val分配给双端队列的每个元素 |
3 | deque::deque 范围构造函数
构造一个双端队列,其元素数量与第一个到最后一个范围内的元素数量相同。 |
4 | deque::deque 复制构造函数
使用现有容器中存在的每个元素的副本构造一个双端队列。 |
5 | deque::deque 移动构造函数
使用移动语义用其他内容构造一个双端队列。 |
6 | deque::deque 初始化列表构造函数
从初始化列表构造一个双端队列。 |
析构函数
先生。 | 方法及说明 |
---|---|
1 | 双端队列::~双端队列
通过释放内存来销毁双端队列对象。 |
会员功能
先生。 | 方法及说明 |
---|---|
1 | deque::分配 范围版本
通过替换旧值来为双端队列元素分配新值。 |
2 | deque::分配 填充版本
通过替换旧值来为双端队列元素分配新值。 |
3 | deque::分配 初始值设定项列表版本
通过替换旧值来为双端队列元素分配新值。 |
4 | 双端队列::在
返回对双端队列中位置n处存在的元素的引用。 |
5 | 双端队列::返回
返回对双端队列最后一个元素的引用。 |
6 | 双端队列::开始
返回指向双端队列第一个元素的随机访问迭代器。 |
7 | 双端队列::cbegin
返回一个常量随机访问迭代器,该迭代器指向双端队列的开头。 |
8 | 双端队列::cend
返回一个常量随机访问迭代器,该迭代器指向双端队列的开头。 |
9 | 双端队列::清除
通过从双端队列中删除所有元素来销毁双端队列,并将双端队列的大小设置为零。 |
10 | 双端队列::crbegin
返回一个常量反向迭代器,它指向容器的反向开头。 |
11 | 双端队列::crend
返回一个常量反向迭代器,它指向双端队列的反向端。 |
12 | 双端队列::安放
通过在位置插入新元素来扩展容器。 |
13 | 双端队列::emplace_back
在双端队列末尾插入新元素。 |
14 | 双端队列::emplace_front
在双端队列的开头插入新元素。 |
15 | 双端队列::空
测试 deque 是否为空。 |
16 | 双端队列::结束
返回一个迭代器,该迭代器指向双端队列容器中的末尾元素。 |
17 号 | deque::擦除位置版本
从双端队列中删除单个元素。 |
18 | 双端队列::擦除范围版本 从双端队列中删除单个元素。 |
19 | 双端队列::前面
返回对双端队列第一个元素的引用 |
20 | 双端队列::get_allocator
返回与双端队列关联的分配器 |
21 | deque::插入 单元素版本
通过在位置插入新元素来扩展容器。 |
22 | 双端队列::插入 填充版本
通过在容器中插入新元素来扩展容器。 |
23 | deque::插入 范围版本
通过在容器中插入新元素来扩展容器。 |
24 | deque::插入 移动版本 通过在容器中插入新元素来扩展容器。 |
25 | deque::insert 初始化列表版本
通过在容器中插入新元素来扩展容器。 |
26 | 双端队列::最大大小
返回双端队列可以容纳的最大元素数。 |
27 | deque::operator= 复制版本
通过替换旧内容将新内容分配给双端队列,并在必要时修改大小。 |
28 | deque::operator= 移动版本
通过替换旧内容将新内容分配给双端队列,并在必要时修改大小。 |
29 | deque::operator= 初始化列表版本
通过替换旧内容将新内容分配给双端队列,并在必要时修改大小。 |
30 | 双端队列::运算符[]
返回对位置n处存在的元素的引用。 |
31 | 双端队列::pop_back
从双端队列中删除最后一个元素并将双端队列的大小减少一。 |
32 | 双端队列::pop_front
从双端队列中删除第一个元素并将双端队列的大小减少一个。 |
33 | 双端队列::push_back
在双端队列末尾插入新元素并将双端队列的大小增加一。 |
34 | deque::push_back 移动版本
在双端队列末尾插入新元素并将双端队列的大小增加一。 |
35 | 双端队列::push_front
在双端队列的前面插入新元素并将双端队列的大小增加一。 |
36 | deque::push_front 移动版本
在双端队列的前面插入新元素并将双端队列的大小增加一。 |
37 | 双端队列::rbegin
返回一个反向迭代器,它指向双端队列的最后一个元素。 |
38 | 双端队列::撕裂
返回一个反向迭代器,它指向双端队列的反向端。 |
39 | 双端队列::调整大小
更改双端队列的大小。 |
40 | deque::调整 值版本大小
更改双端队列的大小。 |
41 | 双端队列::shrink_to_fit
请求容器减少其容量以适应其大小。 |
42 | 双端队列::大小
返回双端队列中存在的元素数。 |
43 | 双端队列::交换
将 deque 的内容与另一个 deque x的内容交换。 |