priority_queue\
时间: 2023-11-03 13:06:29 浏览: 93
STL priority_queue(优先队列)详解
5星 · 资源好评率100%
优先队列(Priority Queue)是一种特殊的队列数据结构,其中的元素按照优先级进行排序。在优先队列中,具有最高优先级的元素总是最先被取出。在C++中,可以使用STL库中的priority_queue来实现优先队列。
priority_queue模板类在头文件<queue>中定义,其使用方式如下:
```cpp
#include <queue>
// 创建一个存储整数的优先队列
std::priority_queue<int> pq;
// 将元素插入优先队列中
pq.push(10);
pq.push(5);
pq.push(7);
// 获取队列中的最大元素(具有最高优先级)
int maxElement = pq.top();
// 弹出队列中的最大元素
pq.pop();
```
默认情况下,priority_queue是一个最大堆(Max Heap),即具有较大元素的优先级更高。如果你想要实现最小堆(Min Heap),可以传入一个比较器函数作为priority_queue的第二个参数。
例如,下面的代码创建了一个最小堆的优先队列:
```cpp
#include <queue>
// 创建一个存储整数的最小堆优先队列
std::priority_queue<int, std::vector<int>, std::greater<int>> pq;
// 将元素插入优先队列中
pq.push(10);
pq.push(5);
pq.push(7);
// 获取队列中的最小元素(具有最高优先级)
int minElement = pq.top();
// 弹出队列中的最小元素
pq.pop();
```
这样,priority_queue将根据比较器函数std::greater<int>来确定元素的优先级,从而实现最小堆的效果。
希望能解答到你的问题!如果还有其他问题,请继续提问。
阅读全文