優先佇列用法

2021-06-05 18:44:20 字數 1697 閱讀 2534

**

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

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

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

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

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

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

//**清單

priority_queueqi;

#include#include#includeusing namespace 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++)

{cout<, greater>qi2;

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

qi2.push(a[i]);

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

{coutnode b[len];

b[0].priority = 6; b[0].value = 1;

b[1].priority = 9; b[1].value = 5;

b[2].priority = 2; b[2].value = 3;

b[3].priority = 8; b[3].value = 2;

b[4].priority = 1; b[4].value = 4;

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

qn.push(b[i]);

cout<<"優先順序"<<'\t'<<"值"<

優先佇列用法

第一種方法 在優先佇列中,優先順序高的元素先出佇列。標準庫預設使用元素型別的 操作符來確定它們之間的優先順序關係。優先佇列的第一種用法,也是最常用的用法 priority queue qi 通過 操作符可知在整數中元素大的優先順序高。故示例1中輸出結果為 96 532第二種方法 在示例1中,如果我們...

優先佇列用法

priority queue這個東西嘛,不求深入理解,只求能夠會自定義優先順序就可以 最普通的倆優先佇列 priority queue 大的元素在隊頭 priority queue,greater 要有空格,不然會報錯,小的元素在隊頭然後就是自定義優先順序 struct node int data ...

優先佇列用法

優先佇列用法 在優先佇列中,優先順序高的元素先出佇列。標準庫預設使用元素型別的 操作符來確定它們之間的優先順序關係。優先佇列的第一種用法,也是最常用的用法 priority queue qi 通過 操作符可知在整數中元素大的優先順序高。故示例1中輸出結果為 9 6 5 3 2 第二種方法 在示例1中...