优先队列的基本用法(初步)
程序员文章站
2022-07-14 12:22:01
...
优先队列的基本用法(初步)
优先队列实际上就是堆,可以用它来维护大根堆和小根堆
//优先队列
#include<queue>
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
priority_queue<int> da; //大根堆
priority_queue<int, vector<int>, greater<int> > xiao; //小根堆,两个>之间要有空格
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i++)
{
int u; cin >> u;
da.push(u);
xiao.push(u);
}
cout << da.top();
cout << endl << xiao.top();
return 0;
}
重载运算符(较难理解)
#include<cstdio>
#include<cstdlib>
#include<queue>
#include<iostream>
#include<algorithm>
using namespace std;
struct cmp
{
bool operator () (const int a, const int b) //如果a的优先级比b小返回true
{
return a % 10 > b % 10; //定义“优先级小”为 a % 10 > b % 10时,a的优先级小
}
};
priority_queue<int> q; //按照优先级从大到小排列 ,即把a拍在后面
int main()
{
q.push(18);
q.push(21);
cout << q.top();
return 0;
}
当然还有很多复杂而神奇的用法,但是对我目前用处不大,先不深入了解
上一篇: 队列的基本用法