1. 程式人生 > >【轉載】C++中priority_queue的用法

【轉載】C++中priority_queue的用法

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();//刪除堆頂元素