優先佇列的使用(模板)

2021-06-27 01:11:13 字數 1154 閱讀 3964

這個是轉得網上的,由於不經常使用,偶爾用的時候還經常出錯,所以記下來了,經常使用的已經用紅色顏色標出來了 :

在優先佇列中,優先順序高的元素先出佇列。

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

優先佇列的第一種用法,也是最常用的用法:

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

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

第二種方法:

在示例1中,如果我們要把元素從小到大輸出怎麼辦呢?

這時我們可以傳入乙個比較函式,使用functional.h函式物件作為比較函式。

priority_queue, greater>qi2;
其中

第二個引數為容器型別。

第二個引數為比較函式。

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

第三種方法:

自定義優先順序。(經常使用)

struct node

int priority;

int value;

};

在該結構中,value為值,priority為優先順序。

通過自定義operator《操作符來比較元素中的優先順序。

在示例3中輸出結果為:

優先順序  值

9          5

8          2

6          1

2          3

1          4

但如果結構定義如下:

struct node

int priority;

int value;

};

則會編譯不過(g++編譯器)

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

而且自定義型別的《操作符與》操作符並無直接聯絡,故會編譯不過。

補充的一點是:

我們可以自己寫乙個比較類,還設定優先順序:

struct cmp

};priority_queue,cmp> q;(按照元素的dist大小從小到大排序).

Dijkstra模板(優先佇列)

二叉堆優化基於貪心的dijkstra演算法 和 優先佇列優化基於bfs的spfa演算法 殊途同歸,都可以得到非負權圖上o mlog n o m logn 的單源最短路徑演算法。include include include include include include include using ...

優先佇列模板題

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

STL優先佇列模板

1.優先佇列 用途 按照某乙個關鍵字對插入元素或刪除元素後的資料集進行自動排序 複雜度 logn 2.資料宣告 1 標頭檔案 include 2 宣告 priority queue q t是乙個泛型,可以是結構體 priority queue greater q greater函式也可以通過對結構體...