#include <iostream>
#include <queue>
#include <functional>
using namespace std;
int main() {
// 定义一个默认的优先队列(最大堆)
priority_queue<int> maxHeap;
// 插入元素
maxHeap.push(10);
maxHeap.push(30);
maxHeap.push20);
// 输出优先队列的顶部元素(最大值)
cout << "Top element in max heap: " << maxHeap.top() << endl;
// 移除顶部元素
maxHeap.pop();
// 再次输出顶部元素
cout << "Top element after pop: " << maxHeap.top() << endl;
// 定义一个最小堆
priority_queue<int, vector<int>, greater<int>> minHeap;
// 插入元素
minHeap.push(10);
minHeap.push(30);
minHeap.push(20);
// 输出优先队列的顶部元素(最小值)
cout << "Top element in min heap: " << minHeap.top() << endl;
// 移除顶部元素
minHeap.pop();
// 再次输出顶部元素
cout << "Top element after pop: " << minHeap.top() << endl;
return 0;
}
priority_queue
是一个容器适配器,默认情况下实现为最大堆,即每次取出的是当前队列中的最大值。priority_queue<int>
可以创建一个最大堆。通过 push
方法插入元素,top
方法获取最大值,pop
方法移除最大值。greater<int>
,可以创建一个最小堆。这样每次取出的是当前队列中的最小值。希望这段代码和解释对你理解 C++ 优先队列有所帮助!
上一篇:c++十进制转二进制
下一篇:c++20 协程
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站