①優先佇列
是一種抽象資料型別,行為有些像佇列,但是他不是先進先出型佇列;
②先出優先佇列的元素是佇列中優先順序最高的元素。就像「急診病人插隊」;
③優先佇列的標頭檔案也是
④用「priority_queuepq」來宣告。這個pq是乙個越小的整數優先順序越低的優先佇列。
⑤出隊元素不是先進隊的元素,出隊的方法由queue的front()變為了top(),而不再是front();
自定義型別
也可以組成優先佇列,但必須為每個元素
定義乙個優先順序
。這個優先順序並不需要乙個確定的數字,只需要
能比較大小
即可。看到這裡,是不是想起了sort?沒錯,
只要
元素定義了「小於」運算子,就可以使用優先佇列。
在一些特殊情況
下,需要使用自定義方式比較優先順序
例如:要實現乙個「個位數大的整數優先順序反而小」的優先佇列,可以定義一
個結構體cmp,在cmp中過載「()」運算子,使cmp「看上去」像乙個函式 , 然後
用「priority_queue,cmp> pq」的方式定義。
下面是這個cmp的定義:
struct cmp
};對於一些常見的優先佇列,stl提供了更為簡單的定義方法,
例如,「越小的整數優先順序
越大的優先佇列」
可以寫成「priority_queue,greater>pq」。
注意,最後兩
個「>」符號不要寫在一起,
否則會被很多(但不是所有)編譯器誤認為是「>>」運算子。
STL容器 優先佇列priority queue
priority queue顧名思義,是乙個具有權值概念的queue,它和queue一樣允許加入新元素 移除舊元素等功能。由於這是乙個queue,所以只允許在底部加入元素,從頂部取出元素。但優先佇列帶有權值概念,其內的元素自動按照元素的權值排序。權值最高者排在最前面。stl的priority que...
STL初步 優先佇列Priority queue
這個優先到底是如何優先?和普通佇列區別在哪?priority queue type,container,functional priority queue,less q priority queue,less a q priority queue,less b 優先佇列中沒有迭代器 也沒有clear...
優先順序佇列用法詳解(priority queue)
由於優先順序佇列的內部資料結構為堆,所以這裡先介紹堆的一些操作。堆的一些函式操作在algorithm標頭檔案中 在 first,last 範圍內 構造最大堆,first,last 可以是vector指標也可以是陣列指標 make heap first last make heap first las...