優先佇列priority queue 用法詳解

2021-06-29 03:28:06 字數 1163 閱讀 2992

優先佇列是佇列的一種,不過它可以按照自定義的一種方式(資料的優先順序)來對佇列中的資料進行動態的排序

每次的push和pop操作,佇列都會動態的調整,以達到我們預期的方式來儲存。

例如:我們常用的操作就是對資料排序,優先佇列預設的是資料大的優先順序高

所以我們無論按照什麼順序push一堆數,最終在佇列裡總是top出最大的元素。

用法:示例:將元素5,3,2,4,6依次push到優先佇列中,print其輸出。

1. 標準庫預設使用元素型別的《操作符來確定它們之間的優先順序關係。

priority_queuepq;
通過《操作符可知在整數中元素大的優先順序高。

故示例1中輸出結果為: 6 5 4 3 2

2. 資料越小,優先順序越高

priority_queue, greater>pq;
struct cmp

};priority_queue, cmp>pq;

其中

第二個引數為容器型別。

第二個引數為比較函式。

故示例2中輸出結果為:2 3 4 5 6

3. 自定義優先順序,過載比較符號

過載預設的 < 符號

struct node

int priority;

int value;

};

這時,需要為每個元素自定義乙個優先順序。

注:過載》號會編譯出錯,因為標準庫預設使用元素型別的《操作符來確定它們之間的優先順序關係。

而且自定義型別的《操作符與》操作符並無直接聯絡

**:

#include#include#includeusing namespace stdnamespace std;

struct node

int priority;

int value;

};int main()

; //示例1

priority_queueqi;

for(i = 0; i < len; i++)

qi.push(a[i]);

for(i = 0; i < len; i++)

return 0;

}

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...