c++优先队列大根堆
时间: 2023-07-01 09:18:55 浏览: 110
C++中的优先队列默认是大根堆,因此可以直接使用priority_queue类来创建大根堆。以下是一个简单的示例代码:
```cpp
#include <queue>
using namespace std;
int main(){
priority_queue<int> pq;
pq.push(5);
pq.push(2);
pq.push(7);
while(!pq.empty()){
cout << pq.top() << " ";
pq.pop();
}
return 0;
}
```
输出结果为:7 5 2,符合大根堆的特点。
如果要使用自定义类型来创建大根堆,可以重载该类型的“<”运算符。以下是一个示例代码:
```cpp
#include <queue>
using namespace std;
struct Node{
int val;
bool operator<(const Node& b) const{
return val < b.val; // 大根堆,val较大的节点排在前面
}
};
int main(){
priority_queue<Node> pq;
pq.push({5});
pq.push({2});
pq.push({7});
while(!pq.empty()){
cout << pq.top().val << " ";
pq.pop();
}
return 0;
}
```
输出结果为:7 5 2,同样符合大根堆的特点。
阅读全文