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 双端队列::ce​​nd

返回一个常量随机访问迭代器,该迭代器指向双端队列的开头。

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的内容交换。

非成员重载函数

先生。 方法及说明
1 运算符==

测试两个双端队列是否相等。

2 运算符!=

测试两个双端队列是否相等。

3 运算符<

测试第一个双端队列是否小于其他双端队列。

4 运算符<=

测试第一个双端队列是否小于或等于其他双端队列。

5 运算符>

测试第一个双端队列是否大于其他双端队列。

6 运算符>=

测试第一个双端队列是否大于或等于其他双端队列。

7 交换

交换两个双端队列的内容。