C 優先佇列自定義排序總結

2021-09-29 06:47:48 字數 3312 閱讀 9246

一、優先隊的使用:

二、基本資料型別:

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...