1: #include<stdio.h>
2: #include<functional>
3: #include<queue>
4: #include<vector>
namespace std;
//定义结构,使用运算符重载,自定义优先级1
struct cmp1{
int &b){
//最小值优先
10: }
11: };
struct cmp2{
int &b){
//最大值优先
15: }
16: };
//定义结构,使用运算符重载,自定义优先级2
struct number1{
int x;
const {
//最小值优先
22: }
23: };
struct number2{
int x;
const {
//最大值优先
28: }
29: };
int a[]={14,10,56,7,83,22,36,91,3,47,72,0};
31: number1 num1[]={14,10,56,7,83,22,36,91,3,47,72,0};
32: number2 num2[]={14,10,56,7,83,22,36,91,3,47,72,0};
33:
int main()
//采用默认优先级构造队列
36:
//最小值优先
//最大值优先
39:
//注意“>>”会被认为错误,
//这是右移运算符,所以这里用空格号隔开
////最大值优先
43:
44: priority_queue<number1>que5;
45: priority_queue<number2>que6;
46:
int i;
for(i=0;a[i];i++){
49: que.push(a[i]);
50: que1.push(a[i]);
51: que2.push(a[i]);
52: que3.push(a[i]);
53: que4.push(a[i]);
54: }
for(i=0;num1[i].x;i++)
56: que5.push(num1[i]);
for(i=0;num2[i].x;i++)
58: que6.push(num2[i]);
59:
60:
);
);
while(!que.empty()){
,que.top());
65: que.pop();
66: }
);
);
69:
);
);
while(!que1.empty()){
,que1.top());
74: que1.pop();
75: }
);
);
while(!que2.empty()){
,que2.top());
80: que2.pop();
81: }
);
);
);
);
while(!que3.empty()){
,que3.top());
88: que3.pop();
89: }
);
);
while(!que4.empty()){
,que4.top());
94: que4.pop();
95: }
);
);
);
);
while(!que5.empty()){
,que5.top());
102: que5.pop();
103: }
);
);
while(!que6.empty()){
,que6.top());
108: que6.pop();
109: }
);
return 0;
112: }
/*
运行结果 :
采用默认优先关系:
(priority_queue<int>que;)
Queue 0:
91 83 72 56 47 36 22 14 10 7 3
采用结构体自定义优先级方式一:
(priority_queue<int,vector<int>,cmp>que;)
Queue 1:
3 7 10 14 22 36 47 56 72 83 91
Queue 2:
91 83 72 56 47 36 22 14 10 7 3
(priority_queue<int,vector<int>,greater<int>/less<int> >que;)
Queue 3:
3 7 10 14 22 36 47 56 72 83 91
Queue 4:
91 83 72 56 47 36 22 14 10 7 3
采用结构体自定义优先级方式二:
(priority_queue<number>que)
Queue 5:
3 7 10 14 22 36 47 56 72 83 91
Queue 6:
91 83 72 56 47 36 22 14 10 7 3
*/