自定義型別的優先佇列

2022-05-08 03:00:12 字數 596 閱讀 7006

當優先佇列不需要運用自定義型別時,直接寫priority_queue即可。

不過優先佇列預設是降序。如果要改成公升序的話還要變成下面形式:

priority_queue, greater> q;//預設是less

但是當需要用到自定義型別(如自己定義的結構體或者pair型別等)是,需要自己寫比較函式或者過載《的。(畢竟計算機不知道怎麼樣才算小於嘛

那麼這裡就引入兩種方式:

一.比較函式(我覺得跟比較函式很像,就叫比較函式了(雖然人家是struct

struct

cmp};

就像上面的**這樣寫就好了(我也不知道為啥要struct,也不知道為啥要過載括號(逃

之後呼叫的話需要在定義優先佇列的時候呼叫,如下:

priority_queue< type, vector, cmp> q;

二.過載小於號

struct

node

};

這樣之後就可以跟最開始一樣。定義的時候只用寫個型別就可以了。

priority_queue< type> q;

優先佇列自定義的注意點

自定義優先佇列結構的注意點 1.優先佇列順序和自己定義的是反的,而且預設大根堆 2.需要自己定義順序的時候。1 需要寫出container,一般就是vector 2 寫比較器就是像自己這裡寫的這樣。3.一般如果不是自定義結構的話,而且只需要改為小根堆,使用greater就行 比較器的例子 struc...

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

一 優先隊的使用 二 基本資料型別 priority queue int q 預設是從大到小 priority queue int,vector int less int q 從大到小排序 priority queue int,vector int greater int q 從小到大排序 三 自定...

自定義型別

typedef型別 typedef 已有型別 新建型別 示例 typedef double area,volume typedef int number number i1 area a enum enum 列舉型別名 enum week 預設sun 0,可以比較 如果修改必須形如enum week...