priority_queue是種一種功能強大的佇列,本質是乙個堆
1. 標頭檔案是#include(實際編譯過程中要加上#include )
2. 關於priority_queue中元素的比較
模板申明帶3個引數:priority_queue
其中type 為資料型別,container為儲存資料的容器(stl裡面預設用的是vector),functional 為元素比較方式。
比較方式預設用operator<,所以如果把後面2個引數預設的話,優先佇列就是大頂堆(降序),隊頭元素最大。
//下面兩種優先佇列的定義是等價的
priority_queue q;//
預設的優先佇列
priority_queue,less >q;
//注意最後兩個「>」符號不要連在一起,否則會被很多(但不是所有)編譯器誤認為是『>>』運算子
如果想讓優先佇列總是把最小的元素放在隊首,只需進行如下的定義:
priority_queue,greater >q;
less 表示數字大的優先順序高,而 greater 表示數字小的優先順序高
—————————————————————————————————————————
附:
平時如果用從大到小不用後面的vector,less
,可能到時候要改成從小到大,你反而會搞忘怎麼寫greater
,反而得不償失
佇列的基本操作:
q.size();//返回q裡元素個數
q.empty()//
如果隊列為空返回true,否則返回false
q.push(k);//
在q的末尾插入k
q.pop();//
刪掉q的第乙個元素
q.top();//
返回q的第乙個元素
後續又新的需求再深入
優先佇列的應用
思路分析 駕駛一輛卡車行駛l單位距離。最開始時,卡車上有p單位的汽油。卡車每開1單位距離需要消耗1單位的汽油。如果在途中車上的汽油耗盡,卡車就無法繼續前行,因而無法到達終點。在途中一共有n個加油站。第i個加油站在距離起點ai單位距離的地方,最多可以給卡車加油bi單位汽油。假設卡車的燃料箱的容量無限大...
優先佇列的應用
1.基本概念 2.關於優先佇列的優先順序 自部落格 priority queue,less 大的優先順序大 priority queuevector,greater 小的優先順序大 當然優先順序也可以自己寫比較函式自己定義 struct cmp1 struct cmp2 priority queue...
Add All uva優先佇列的應用
題目的解法屬於貪心,因為cost a1 a2,所以要保證每次的cost最小,所以說,每次將佇列中最小的兩個相加,得出來的數放入佇列中,再取2個最小的相加,直到全部加完,所以這就涉及了乙個取2個最小數的問題,我說一下我一開始的做法 include include includeusing namesp...