优先队列 c++ 小的优先
时间: 2024-10-25 20:14:34 浏览: 21
c++优先队列(priority_queue)用法详解
5星 · 资源好评率100%
在 C++ 中,优先队列(Priority Queue)是一种特殊的容器,它按照元素的优先级进行排序,每次出队的是优先级最高的元素。这通常用于需要快速处理任务的应用场景,比如调度、事件管理等,其中任务的完成顺序很重要。
C++ 标准库提供了一种名为 `std::priority_queue` 的模板容器,它是基于二叉堆实现的。有两种类型的优先队列可以创建:
1. `std::priority_queue<T>`:默认使用最大堆(大顶堆),即元素值越大,越排在前面。如果希望使用最小堆(小顶堆),可以传递给构造函数一个比较函数或使用 `std::greater<T>` 或 `std::less<T>` 来指定比较规则。
2. `std::priority_queue<T, Container, Compare>`:更通用的版本,允许自定义存储容器 `Container` 和比较函数 `Compare`。
例如,创建一个最小堆的优先队列:
```cpp
#include <queue>
#include <functional>
int main() {
std::priority_queue<int, std::vector<int>, std::less<int>> pq; // 使用默认小于比较
// 插入元素
pq.push(5);
pq.push(10);
pq.push(1);
// 出队操作总是获取当前最小的元素
while (!pq.empty()) {
int top = pq.top();
pq.pop(); // 获得并删除最小元素
std::cout << "Popped: " << top << std::endl;
}
return 0;
}
```
阅读全文