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

學習算法過程中經常會遇到堆,而STL中的priority_queue是(優先隊列)就是一個封裝好的結構。
轉載自:https://blog.csdn.net/xiaoquantouer/article/details/52015928

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();//刪除堆頂元素
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章