🐵指尖猴全新升级
第11课:优先队列priority_queue
🛠️

优先队列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课完成!继续探索下一课吧 🚀