優先佇列用法

2022-05-30 03:45:09 字數 1996 閱讀 8607

優先佇列用法

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

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

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

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

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

第二種方法:

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

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

priority_queue, greater >qi2;
其中第二個引數為容器型別。

第二個引數為比較函式。

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

第三種方法:

自定義優先順序。

struct

node

intpriority;

intvalue;

};

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

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

在示例3中輸出結果為:

優先順序  值

9          5

8          2

6          1

2          3

1          4

但如果結構定義如下:

struct

node

intpriority;

intvalue;

};

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

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

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

//**清單

1 #include2 #include3 #include4

using

namespace

std;

5struct

node611

intpriority;

12int

value;

13};

14int

main()15;

19//

示例120 priority_queueqi;

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

22qi.push(a[i]);

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

2428 cout<

29//

示例230 priority_queue, greater >qi2;

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

32qi2.push(a[i]);

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

3438 cout<

39//

示例340 priority_queueqn;

41node b[len];

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

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

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

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

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

; 47

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

49qn.push(b[i]);

50 cout<

優先順序"

<

<

<

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

5256

return0;

57 }

view code

優先佇列用法

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

優先佇列用法

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

優先佇列用法

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