在C++中有一个东西叫做优先队列,大根堆或小根堆(priority_queue)
例如priority_queue<int> p;
就为一个默认的大根堆,相当于priority_queue<int, vector<int>, less<int>> p;
相反,priority_queue<int, vector<int>, greater<int>> q;
就为小根堆
举例代码如下,将大根堆/小根堆的堆顶元素输出
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main() {
vector<int> nums = {1, 5, 8, 6};
//默认大根堆
priority_queue<int> p;
for (auto x : nums) p.push(x);
cout << p.top() << endl;
//小根堆
priority_queue<int, vector<int>, greater<int>> q;
for (auto x : nums) q.push(x);
cout << q.top() << endl;
return 0;
}
输出结果分别为8, 1