C++ 库 - <队列>


队列简介

队列是一种设计用于在 FIFO(先进先出)上下文中操作的数据结构。在队列中,元素从后端插入,从前端删除。

队列类是容器适配器。容器是保存相同类型数据的对象。队列可以从不同的序列容器创建。容器适配器不支持迭代器,因此我们不能使用它们进行数据操作。然而,它们分别支持用于数据插入和删除的push()pop()成员函数。

定义

以下是 <queue> 头文件中 std::queuer 的定义

template <class T, class Container = deque<T> > class queue;

参数

  • T - 所包含元素的类型。

    T 可以替换为任何其他数据类型,包括用户定义的类型。

  • Container - 底层容器对象的类型。

会员类型

以下成员类型可以用作成员函数的参数或返回类型。

先生。 会员类型 定义
1 值类型 T(模板的第一个参数)
2 容器类型 模板的第二个参数
3 尺码类型 尺寸_t
4 参考 值类型&
5 常量引用 常量值类型&
6 差异类型 ptrdiff_t

<队列> 中的函数

下面是 <queue> 标头中所有方法的列表。

构造函数

先生。 方法及说明
1 queue::queue 默认构造函数

构造一个空队列对象,包含零个元素。

2 队列::队列 初始化构造函数

构造一个队列对象并通过ctnr的副本分配内部容器。

3 queue::queue 移动构造函数

使用移动语义用 other 的内容构造队列。

4 队列::队列 复制构造函数

使用现有队列other中存在的每个元素的副本构造一个队列。

析构函数

先生。 方法及说明
1 队列::~队列

通过释放容器内存来销毁队列。

会员功能

先生。 方法及说明
1 队列::返回

返回对队列最后一个元素的引用。

2 队列::安放

构造新元素并将其插入到队列末尾。

3 队列::空

测试队列是否为空。

4 队列::前面

返回对队列第一个元素的引用。

5 队列::运算符=复制版本

通过替换旧内容将新内容分配到队列。

6 队列::运算符=移动版本

通过替换旧内容将新内容分配到队列。

7 队列::弹出

删除队列的前面元素。

8 队列::推送副本版本

在队列末尾插入新元素。

9 队列::推送移动版本

在队列末尾插入新元素。

10 队列::大小

返回队列中存在的元素总数。

11 队列::交换

将队列的内容与另一个队列的内容交换。

非成员重载函数

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

测试两个队列是否相等。

2 运算符!=

测试两个队列是否相等。

3 运算符<

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

4 运算符<=

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

5 运算符>

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

6 运算符>=

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

7 交换

交换两个队列的内容。

priority_queue简介

优先级队列是保存优先级的队列数据结构。优先级队列类似于堆数据结构,其中元素可以按任何顺序插入,并且始终首先检索最大堆元素。

定义

以下是 <queue> 头文件中 std::priority_queue 的定义

template <class T, class Container = vector<T>,
class Compare = less<typename Container::value_type> < class priority_queue;

参数

  • T - 所包含元素的类型。

    T 可以替换为任何其他数据类型,包括用户定义的类型。

  • Container - 底层容器对象的类型。

  • Compare - 用于排序priority_queue的比较对象。

    这可能是可以比较其两个参数的函数指针或函数对象。

会员类型

以下成员类型可以用作成员函数的参数或返回类型。

先生。 会员类型 定义
1 值类型 T(模板的第一个参数)
2 容器类型 模板的第二个参数
3 尺码类型 尺寸_t
4 参考 值类型&
5 常量引用 常量值类型&
6 差异类型 ptrdiff_t

<队列> 中的函数

下面是 <queue> 标头中所有方法的列表。

构造函数

先生。 方法及说明
1 Priority_queue::priority_queue 默认构造函数

构造一个空的priority_queue,元素为零。

2 Priority_queue::priority_queue 初始化构造函数

构造一个priority_queue对象并通过ctnr的副本分配内部容器。

3 Priority_queue::priority_queue 范围构造函数

构造一个priority_queue,其中包含从第一个到最后一个范围内的尽可能多的元素。

4 Priority_queue::priority_queue 移动构造函数

使用移动语义用 other 的内容构造priority_queue。

5 Priority_queue::priority_queue 复制构造函数

使用现有优先级队列中存在的每个元素的副本构造一个优先级队列。

析构函数

先生。 方法及说明
1 优先队列::~优先队列

通过释放容器内存来销毁priority_queue。

会员功能

先生。 方法及说明
1 优先队列::放置

构造新元素并将其按排序顺序插入到priority_queue中。

2 优先队列::空

测试priority_queue是否为空。

3 Priority_queue::operator= 复制版本

通过替换旧内容将新内容分配给priority_queue。

4 priority_queue::operator= 移动版本

通过替换旧内容将新内容分配给priority_queue。

5 优先级队列::弹出

删除priority_queue 的前面元素。

6 priority_queue::push 复制版本

按排序顺序插入新元素。

7 priority_queue::push 移动版本

按排序顺序插入新元素。

8 优先级队列::大小

返回priority_queue中存在的元素总数。

9 优先队列::交换

将priority_queue 的内容与另一个priority_queue 的内容交换。

10 优先级队列::顶部

返回对priority_queue第一个元素的引用

非成员重载函数

先生。 方法及说明
1 交换

将priority_queue 的内容与另一个priority_queue 的内容交换。