C++ 教程

C++ 教程 C++ 简介 C++ 入门 C++ 语法 C++ 输出 C++ 注释 C++ 变量 C++ 用户输入 C++ 数据类型 C++ 运算符 C++ 字符串 C++ 数学运算 C++ 布尔值 C++ 条件语句 C++ Switch 语句 C++ While 循环 C++ For 循环 C++ Break/Continue 语句 C++ 数组 C++ 引用 C++ 指针

C++ 函数

C++ 函数 C++ 函数参数 C++ 函数重载

C++ 面向对象

C++ OOP C++ 类和对象 C++ 类方法 C++ 构造函数 C++ 访问修饰符 C++ 封装 C++ 继承 C++ 多态

C++ 高级教程

C++ 文件 C++ 异常处理 C++ 动态内存 C++ 命名空间 C++ 模板 C++ 预处理器 C++ 信号处理 C++ 多线程 C++ Web 编程 C++ 正则表达式

C++ 如何使用

C++ 两个数字相加

C++ 标准库参考

C++ 标准库 - 简介 C++ 标准库 - <fstream> C++ 标准库 - <iomanip> C++ 标准库 - <ios> C++ 标准库 - <iosfwd> C++ 标准库 - <iostream> C++ 标准库 - <istream> C++ 标准库 - <ostream> C++ 标准库 - <sstream> C++ 标准库 - <streambuf> C++ 标准库 - <atomic> C++ 标准库 - <complex> C++ 标准库 - <exception> C++ 标准库 - <functional> C++ 标准库 - <limits> C++ 标准库 - <locale> C++ 标准库 - <memory> C++ 标准库 - <new> C++ 标准库 - <numeric> C++ 标准库 - <regex> C++ 标准库 - <stdexcept> C++ 标准库 - <string> C++ 标准库 - <thread> C++ 标准库 - <tuple> C++ 标准库 - <typeinfo> C++ 标准库 - <utility> C++ 标准库 - <valarray>

C++ 模板库参考

C++ STL 库 - <array> C++ STL 库 - <bitset> C++ STL 库 - <deque> C++ STL 库 - <forward_list> C++ STL 库 - <list> C++ STL 库 - <map> C++ STL 库 - <queue> C++ STL 库 - <set> C++ STL 库 - <stack> C++ STL 库 - <unordered_map> C++ STL 库 - <unordered_set> C++ STL 库 - <vector> C++ STL 库 - <algorithm> C++ STL 库 - <iterator>

C++ 实例

C++ 实例 C++ 练习 C++ 测验



C++ 标准模板库 - <queue>

队列介绍

Queue 队列是一种设计用于在 FIFO(先进先出)上下文中操作的数据结构。 队列中的元素从 rear 端插入并从 front 端移除。

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


定义

下面是来自 <queue> 头文件的 std::queuer 的定义

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

参数

  • T − 包含的元素的类型。

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

  • Container − 基础容器对象的类型。


成员类型

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

序号 成员类型 定义
1 value_type T (First parameter of the template)
2 container_type Second parameter of the template
3 size_type size_t
4 reference value_type&
5 const_reference const value_type&
6 difference_type ptrdiff_t

<queue> 中的函数

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

构造函数

序号 方法 & 说明
1 queue::queue default constructor

构造一个具有零个元素的空队列对象。

2 queue::queue initialize constructor

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

3 queue::queue move constructor

使用移动语义构造具有其他内容的队列。

4 queue::queue copy constructor

构造一个队列,其中包含现有队列 other 中存在的每个元素的副本。

析构函数

序号 方法 & 说明
1 queue::~queue

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

成员函数

序号 方法 & 说明
1 queue::back

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

2 queue::emplace

在队列末尾构造并插入新元素。

3 queue::empty

测试队列是否为空。

4 queue::front

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

5 queue::operator= copy version

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

6 queue::operator= move version

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

7 queue::pop

删除队列的前面元素。

8 queue::push copy version

在队列末尾插入新元素。

9 queue::push move version

在队列末尾插入新元素。

10 queue::size

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

11 queue::swap

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

非成员重载函数

序号 方法 & 说明
1 operator==

测试两个队列是否相等。

2 operator!=

测试两个队列是否相等。

3 operator<

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

4 operator<=

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

5 operator>

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

6 operator>=

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

7 swap

交换两个队列的内容。


priority_queue 简介

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


定义

下面是来自 <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 value_type T (First parameter of the template)
2 container_type Second parameter of the template
3 size_type size_t
4 reference value_type&
5 const_reference const value_type&
6 difference_type ptrdiff_t

<queue> 中的函数

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

构造函数

序号 方法 & 说明
1 priority_queue::priority_queue default constructor

构造一个零元素的空 priority_queue。

2 priority_queue::priority_queue initialize constructor

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

3 priority_queue::priority_queue range constructor

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

4 priority_queue::priority_queue move constructor

构造 priority_queue 与其他使用移动语义的内容。

5 priority_queue::priority_queue copy constructor

构造一个priority_queue,其中包含现有priority_queue other 中存在的每个元素的副本。

析构函数

序号 方法 & 说明
1 priority_queue::~priority_queue

通过解除分配容器内存来销毁 priority_queue。

成员函数

序号 方法 & 说明
1 priority_queue::emplace

在 priority_queue 中按排序顺序构造和插入新元素。

2 priority_queue::empty

测试 priority_queue 是否为空。

3 priority_queue::operator= copy version

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

4 priority_queue::operator= move version

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

5 priority_queue::pop

删除 priority_queue 的前面元素。

6 priority_queue::push copy version

按排序顺序插入新元素。

7 priority_queue::push move version

按排序顺序插入新元素。

8 priority_queue::size

返回 priority_queue 中的元素总数。

9 priority_queue::swap

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

10 priority_queue::top

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

非成员重载函数

序号 方法 & 说明
1 swap

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