优先队列小根堆 c++
时间: 2024-11-20 18:30:12 浏览: 6
STL_quene.rar_crowd7oc_优先队列 堆_大根堆_大根对 c++_小根堆
优先队列是一种特殊的队列,它的特性是在添加新元素时,总是将当前最小(或最大,取决于实现)的元素放在队首。这通常通过实现为一个小根堆(Min Heap)来实现,因为小根堆满足每个节点都小于或等于其子节点的值,这样堆顶就是最小元素。
在 C++ 中,你可以使用 `<queue>` 标准库提供的 `priority_queue` 来创建一个默认的小根堆优先队列。如果你想自定义比较函数,可以提供一个 `compare` 函数作为模板参数。基本的使用步骤如下:
```cpp
#include <queue>
// 定义一个比较函数,例如按整数大小降序排序
struct Compare {
bool operator()(int a, int b) const { return a > b; }
};
std::priority_queue<int, std::vector<int>, Compare> pq;
// 插入元素
pq.push(5);
pq.push(3);
pq.push(7);
// 删除并获取最小元素
int top = pq.top();
pq.pop();
阅读全文