優先佇列 priority queue

2021-07-10 07:26:16 字數 1098 閱讀 8392

①優先佇列

是一種抽象資料型別,行為有些像佇列,但是他不是先進先出型佇列;

②先出優先佇列的元素是佇列中優先順序最高的元素。就像「急診病人插隊」;

③優先佇列標頭檔案也是

④用「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...