優先佇列用法
在優先佇列中,優先順序高的元素先出佇列。
標準庫預設使用元素型別的《操作符來確定它們之間的優先順序關係。
優先佇列的第一種用法,也是最常用的用法:
priority_queue qi;通過《操作符可知在整數中元素大的優先順序高。
故示例1中輸出結果為:9 6 5 3 2
第二種方法:
在示例1中,如果我們要把元素從小到大輸出怎麼辦呢?
這時我們可以傳入乙個比較函式,使用functional.h函式物件作為比較函式。
priority_queue, greater >qi2;其中第二個引數為容器型別。
第二個引數為比較函式。
故示例2中輸出結果為:2 3 5 6 9
第三種方法:
自定義優先順序。
struct在該結構中,value為值,priority為優先順序。node
intpriority;
intvalue;
};
通過自定義operator《操作符來比較元素中的優先順序。
在示例3中輸出結果為:
優先順序 值
9 5
8 2
6 1
2 3
1 4
但如果結構定義如下:
struct則會編譯不過(g++編譯器)node
intpriority;
intvalue;
};
因為標準庫預設使用元素型別的《操作符來確定它們之間的優先順序關係。
而且自定義型別的《操作符與》操作符並無直接聯絡,故會編譯不過。
//**清單
1 #include2 #include3 #include4view codeusing
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 }
優先佇列用法
在優先佇列中,優先順序高的元素先出佇列。標準庫預設使用元素型別的 操作符來確定它們之間的優先順序關係。優先佇列的第一種用法,也是最常用的用法 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 ...