第11课:优先队列priority_queue
进度 0/24
🛠️
优先队列priority_queue
STL现成的堆,一行定义搞定优先级!
📖知识引入
🧰priority_queue
C++ STL封装好的堆,开箱即用,默认是大根堆
🎛️换成小根堆
写成priority_queue<int, vector<int>, greater<int>>即可
🚪三个核心操作
push入队、top看堆顶、pop弹出堆顶,够用到毕业
💼实战地位
信奥里凡是“动态取最值”的问题,它都是第一选择
💡
priority_queue没有clear函数,想清空就循环pop到空,或者重新声明一个
🔍大小根堆一起用
#include <queue>
using namespace std;
priority_queue<int> bigHeap; // 大根堆
priority_queue<int, vector<int>, greater<int>> smallHeap; // 小根堆
int main() {
smallHeap.push(5); smallHeap.push(1); smallHeap.push(9);
cout << smallHeap.top() << endl; // 1,最小值在堆顶
smallHeap.pop(); // 弹出 1
cout << smallHeap.top() << endl; // 5
return 0;
}默认是大根堆,加上greater<int>就摇身变成小根堆。
🎯小测验
第1题:priority_queue默认是什么堆?
第2题:定义小根堆要加哪个参数?
第3题:查看堆顶但不删除,用哪个函数?
📝本课知识点
- ✓默认是大根堆
- ✓greater<int>变小根堆
- ✓top看堆顶pop弹出
第11课完成!继续探索下一课吧 🚀
