c++ 优先队列用法
时间: 2024-06-22 17:01:20 浏览: 276
在C++中,优先队列(priority_queue)是一个容器适配器,它实现了基于堆的数据结构,其中元素总是按照一定的优先级顺序存储。优先队列默认使用最大堆,即元素值越大,位置越靠下;如果需要最小堆,则需要显式指定。
以下是如何在C++中使用优先队列的基本步骤:
1. 包含头文件:
```cpp
#include <queue>
```
2. 定义元素类型,并声明队列:
```cpp
using namespace std;
typedef pair<int, int> PriorityType; // 定义优先级类型,这里以整数对为例
priority_queue<PriorityType> pq; // 创建一个最大优先队列
```
3. 插入元素:
```cpp
pq.push(PriorityType(5, 1)); // 插入元素 (优先级, 数据)
pq.push(PriorityType(3, 2)); // 可以插入多个
```
4. 删除并获取最大优先级元素(出队):
```cpp
PriorityType top = pq.top(); // 获取当前最高优先级元素
pq.pop(); // 删除并返回最高优先级元素
```
5. 选择最高优先级元素但不删除:
```cpp
if (!pq.empty()) {
PriorityType highestPriority = pq.top();
}
```
6. 非模板版本(仅适用于整数优先级):
```cpp
priority_queue<int, vector<int>, greater<int>> pqInt; // 使用小于号(less)创建最小堆
```
阅读全文