C++ STL 库 - <queue>

创建于 2024-12-03 / 31
字体: [默认] [大] [更大]

队列介绍

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



0 人点赞过