在學習了堆優化的迪傑斯特拉時,學了優先佇列,發現非常好用。qaq之前應該早點學的,哎,自己又菜又懶,鹹魚王無疑了。學習知識點記錄下來!
優先佇列就是將佇列中的元素賦予優先順序,在訪問優先佇列中的元素時,具有最高優先順序的元素先被訪問。佇列時先進先出,而優先佇列是優先順序最高的先出。
初始化:需要
標頭檔案 #include
priority_queue
type 就是資料型別,
container
就是容器型別(
container
必須是用陣列實現的容器,比如
vector,deque
等等,但不能用
list
。stl
裡面預設用的是
vector
),functional
就是比較的方式,當需要用自定義的資料型別時才需要傳入這三個引數,使用基本資料型別時,只需要傳入資料型別,預設是大頂堆
一般是:
priority_queue ,greater > q; //公升序佇列
priority_queue ,less >q; //
降序佇列
priority_queueq; //
node為結構體,可以自定義優先順序
empty( ) //判斷乙個佇列是否為空
pop( ) //
刪除隊頂元素
push( ) //
加入乙個元素
size( ) //
返回優先佇列中擁有的元素個數
top( ) //
返回優先佇列的隊頂元素
#include#includeusing
namespace
std;
intmain()
;
for(int i=0;i<5;i++)
cout
<<"
公升序佇列
"
cout
<<"
降序佇列
"
return0;
}
//自定義優先順序
#include#include
using
namespace
std;
struct
node
node(
int a,int
b)
operator
< (const node &rhs)const
}; int
main()
return0;
}
參考:
STL priority queue 優先佇列
剛開始學習演算法不久,一些常用的演算法工具還沒有掌握,真是丟人!前一段時間用到優先順序佇列時,都是自己手動通過最大堆或者最小堆來寫乙個,容易出錯且耗時。接觸到stl後,開始用map和set模擬乙個優先順序佇列,但是總有一些小問題出現,發現stl功能強大,但我卻幾乎不懂。今天終於決定使用stl提供的p...
STL priority queue 常見用法詳解
演算法筆記 學習筆記 priority queue又稱優先佇列,其底層時用堆來實現的。在優先佇列中,隊首元素一定是當前佇列中優先順序最高的那乙個。桃子 優先順序 3 梨子 優先順序 4 蘋果 優先順序 1 那麼出隊順序是 梨子 4 桃子 3 蘋果 1 可以在任何時候往優先佇列裡面加入 push 元素...
C Primer Chapter One學習筆記
筆記 1.流 從io裝置上讀入或寫出的字串行,用來說明字元隨時間順序生成或消耗。2.輸入輸出符可連用原因 operator 或operator 返回stream物件。3.要測試程式那個語句出錯,使用cout 4.新建乙個內建型別,如int i 0 最好先初始化,不然用到的時候沒初始化會產生奇怪的錯誤...