priority_queue
来组ai的回答
https://chatgpt.com/c/679ed5d1-79c0-800c-8bb1-1c105c7107aa
一些与别的stl不同的地方
1. pop操作是先将栈顶元素和栈底元素互换 然后再将栈顶元素下沉 然后删除栈顶
priority_queue也可以比抽象类 只要<重载 指定比较对象就可以
代码演示
//
// Created by 徐昌真 on 2025/2/2.
//
#include <iostream>
#include <queue>
#include <vector>
#include <string>
using namespace std;
class Lesson{
public:
int num;
string lesson;
Lesson(){ num = -1; lesson = " ";}; //默认构造函数
Lesson(int n, const string& l): num(n), lesson(l) {};
bool operator<(const Lesson& other) const{ // <重载
return num < other.num;
}
};
int main() {
// 小顶堆
priority_queue<int, vector<int>, greater<int>> q1;
q1.push(1);
q1.push(3);
q1.push(2);
q1.push(10);
cout << "q1.top(): " << q1.top() << endl;
// 大顶堆
priority_queue<Lesson> q2;
q2.push(Lesson(1, "语文"));
q2.push(Lesson(3, "英语"));
q2.push(Lesson(2, "数学"));
q2.push(Lesson(0, "c++"));
cout << "q2.top(): " << q2.top().num << ':' << q2.top().lesson << endl;
return 0;
}