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