STL 優先佇列

2021-06-06 14:09:43 字數 1512 閱讀 3696

優先佇列

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

標準庫預設使用元素型別的

<

操作符來確定它們之間的優先順序關係。

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

priority_queue qi;

通過<

操作符可知在整數中元素大的優先順序高。

故示例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++編譯器)

因為標準庫預設使用元素型別的

<

操作符來確定它們之間的優先順序關係。

而且自定義型別的

<

操作符與

>

操作符並無直接聯絡,故會編譯不過。

//**清單

#include

#include

#include

using namespace std;

struct node

int priority;

int value;

};int main()

;//示例1

priority_queue qi;

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

qi.push(a[i]);

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

return 0;

}程式執行結果如下圖:

佇列和棧

佇列的操作:

不多,不多做解釋

棧的操作:

不多,不多做解釋

優先佇列 stl

priority queue預設頂部是最大值 1 優先佇列的定義 包含標頭檔案 queue.h functional.h 可以使用具有預設優先順序的已有資料結構 也可以再定義優先佇列的時候傳入自定義的優先順序比較物件 或者使用自定義物件 資料結構 但是必須過載好 操作符。2 優先佇列的常用操作 優先...

STL 優先佇列

stl是個很玄學的東西,裡面有一種外掛程式般的操作 優先佇列。主體和佇列差不多,只不過每次push都會把當前的數放在合適的位置。而隊頭就是最大 小 的數。大概可以看成這樣的 queue tail a sort queue 1,queue 1 tail 隊頭最大的優先佇列 priority queue...

STL 優先佇列

優先佇列 priorityqueue 普通的佇列是一種先進先出的資料結構,元素在佇列尾追加,而從佇列頭刪除。在優先佇列中,元素被賦予優先順序。當訪問元素時,具有最高優先順序的元素最先刪除。優先佇列具有最高端先出 largest in,first out 的行為特徵。對於優先對列,在這裡談談對結構體和...