【轉載】C++中priority_queue的用法
阿新 • • 發佈:2018-12-23
1、標頭檔案
#include<queue>
2、普通定義方法
priority_queue<int> p;
3、更一般的定義方法
priority_queue<Type, Container, Functional>
Type為資料型別, Container為儲存資料的容器,Functional為元素比較方式。
如果不寫後兩個引數,那麼容器預設用的是vector,比較方式預設用operator<,也就是優先佇列是大頂堆,隊頭元素最大。
4、優先輸出小資料
priority_queue<int, vector<int> , greater<int> > p;
5、自定義優先順序,過載預設的 < 符號
struct Node{
int x,y;
Node(int a=0, int b=0):
x(a), y(b) {}
};
struct cmp{
bool operator()(Node a, Node b){
if(a.x == b.x) return a.y>b.y;
return a.x>b.x;
}
};
priority_queue<Node, vector <Node>, cmp>p;
6、常用函式
p.push(x);//把x加入堆
x=p.top();//得到堆頂元素
p.pop();//刪除堆頂元素