優先順序佇列
阿新 • • 發佈:2021-01-29
優先順序佇列中的元素自動依照元素的權值排列。權值最高者排在最前面。
預設的情況下維護的是一個大堆,即權值以從高到低排列。
第一種用法
優先順序判斷預設使用<操作符,輸出按權值從高到低順序
int main()
{
priority_queue<int> q;
q.push(6);
q.push(4);
q.push(2);
q.push(5);
q.push(1);
q.push(3);
for(int i=0;!q.empty();++i)
{
cout<< q.top()<<" ";
q.pop();
}
cout<<endl;
return 0;
}
輸出
第二種用法
greater優先佇列 (權值從小到大排序)
priority_queue < int ,vector<int>, greater<int> >q;
less優先順序佇列 (權值從大到小排序)
priority_queue< int, vector<int>, less<int> >q;
或
priority_queue< int ,vector<int> >q;
註釋
第一個引數為元素的型別,第二個引數為容器型別,第三個引數為比較函式(預設為less)
第三種方式
採用結構體
#include <iostream>
#include <bits/stdc++.h>
#include <queue>
#include <stack>
using namespace std;
struct node
{
int s;
int r;
friend bool operator < (node a,node b)
{
return a.r>b.r;
}
}
int main()
{
priority_queue<node>q;
return 0;
}