一、優先隊的使用:
二、基本資料型別:
priority_queue<
int>
q;//預設是從大到小
priority_queue<
int, vector<
int>
,less<
int>
>q;
//從大到小排序
priority_queue<
int, vector<
int>
, greater<
int>
>q;
//從小到大排序
三、自定義型別:第1種:
struct node
};
(1)weight大的優先順序高 :
struct cmp1
};
構造優先佇列:
priority_queue< node, vector, cmp1> q1;
(2)weight小的優先順序高
struct cmp2
};
構造優先佇列:
priority_queue,cmp2> q2;
第2種:
過載 < 運算子
(1)weight大的優先
struct node2
friend bool operator <
(const node2 &a,
const node2 &b)
};
構造優先佇列:
priority_queueq3;
(2)weight小的優先
struct node3
friend bool operator <
(const node3 &a,
const node3 &b)
};
構造優先佇列:
priority_queueq4;
test**:
#include
#include
#include
using namespace std;
struct node};
struct cmp1};
struct cmp2};
bool cmp
(const node &a,
const node &b)
struct node2
friend bool operator <
(const node2 &a,
const node2 &b)};
struct node3
friend bool operator <
(const node3 &a,
const node3 &b)};
intmain()
; priority_queue< node, vector
, cmp1> q1;
for(
int i =
0; i < values.
length()
; i++
) cout<<
"優先佇列q1的第乙個元素是: "
<
top(
).data<
priority_queue
,cmp2> q2;
for(
int i =
0; i < values.
length()
; i++
) cout<<
"優先佇列q2的第乙個元素是: "
<
top(
).data<
priority_queue
q3;for(
int i =
0; i < values.
length()
; i++
) cout<<
"優先佇列q3的第乙個元素是: "
<
top(
).data<
priority_queue
q4;for(
int i =
0; i < values.
length()
; i++
) cout<<
"優先佇列q4的第乙個元素是: "
<
top(
).data<
}
執行截圖:
更新:
priority_queue< pair<
double
,int
>
, vector
double
,int
>
>
, greater
double
,int
>
>
> pq;
//first小的優先
priority_queue< pair<
double
,int
>
, vector
double
,int
>
>
, less
double
,int
>
>
> pq;
//first大的優先
first小的優先
class
cmp}
;
first大的優先
class
cmp}
;
自定義型別的優先佇列
當優先佇列不需要運用自定義型別時,直接寫priority queue即可。不過優先佇列預設是降序。如果要改成公升序的話還要變成下面形式 priority queue,greater q 預設是less 但是當需要用到自定義型別 如自己定義的結構體或者pair型別等 是,需要自己寫比較函式或者過載 的...
優先佇列自定義的注意點
自定義優先佇列結構的注意點 1.優先佇列順序和自己定義的是反的,而且預設大根堆 2.需要自己定義順序的時候。1 需要寫出container,一般就是vector 2 寫比較器就是像自己這裡寫的這樣。3.一般如果不是自定義結構的話,而且只需要改為小根堆,使用greater就行 比較器的例子 struc...
c 自定義排序
class program console.writeline console.writeline source tolist value var list arr.tolist for int i 0 i 10 i console.writeline console.writeline sourc...