在優先佇列中,優先順序高的元素先出佇列。
標準庫預設使用元素型別的《操作符來確定它們之間的優先順序關係。
優先佇列的第一種用法,也是最常用的用法:
<
int>
qi;通過《操作符可知在整數中元素大的優先順序高。
故示例1中輸出結果為:9 6 5 3 2
第二種方法:
在示例1中,如果我們要把元素從小到大輸出怎麼辦呢?
這時我們可以傳入乙個比較函式,使用functional.h函式物件作為比較函式。
<
int, vector
<
int>
, greater
<
int>
>
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
cout<
for(i = 0; i < len; i++)
qi.push(a[i]);
for(i = 0; i < len; i++)};
int main()
else}}
}return 0;}
優先佇列用法
在優先佇列中,優先順序高的元素先出佇列。標準庫預設使用元素型別的 操作符來確定它們之間的優先順序關係。優先佇列的第一種用法,也是最常用的用法 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 ...