priority_queue greater
时间: 2025-03-26 13:15:13 浏览: 10
使用 priority_queue
和 greater
实现小顶堆
为了实现一个小顶堆,在 C++ 中可以利用标准库中的 std::priority_queue
并指定比较器为 std::greater<T>
。默认情况下,std::priority_queue
是大顶堆;通过提供不同的比较函数对象作为模板参数之一,则可改变其行为。
下面是一个简单的例子来展示如何创建并操作基于整数的小顶堆:
#include <queue>
#include <vector>
using namespace std;
void minHeapExample() {
// 定义一个最小堆,使用 greater<int> 作为第三个模板参数
priority_queue<int, vector<int>, greater<int>> min_heap;
// 向堆中插入元素
min_heap.push(3);
min_heap.push(1);
min_heap.push(4);
// 输出当前堆顶元素(即最小值)
cout << "Top element is: " << min_heap.top() << endl;
// 移除堆顶元素
min_heap.pop();
}
此代码片段展示了基本的操作方法[^2]。当向队列添加新项时,它会自动调整内部结构以保持堆属性——对于小根堆而言就是父节点总是小于等于子节点。每当调用 .top()
方法获取最上面的项目时,实际上得到的就是集合里目前存在的最小数值。
此外,还可以扩展上述概念用于更复杂的数据类型,比如字符串或自定义类实例。只需确保这些类型的对象支持 <
运算符重载以便于正确排序即可。
相关推荐


















