priority queue 使用方法

2022-04-22 11:51:17 字數 2432 閱讀 8448

普通的佇列是一種先進先出的資料結構,元素在佇列尾追加,而從佇列頭刪除。

在優先佇列中,元素被賦予優先順序。當訪問元素時,具有最高優先順序的元素最先刪除。優先佇列具有最高端先出 (first in, largest out)的行為特徵。

首先要包含標頭檔案#include, 他和queue不同的就在於我們可以自定義其中資料的優先順序, 讓優先順序高的排在佇列前面,優先出隊。

優先佇列具有佇列的所有特性,包括佇列的基本操作,只是在這基礎上新增了內部的乙個排序,它本質是乙個堆實現的。

和佇列基本操作相同:

定義:priority_queue

type 就是資料型別,container 就是容器型別(container必須是用陣列實現的容器,比如vector,deque等等,但不能用 list。stl裡面預設用的是vector),functional 就是比較的方式。

當需要用自定義的資料型別時才需要傳入這三個引數,使用基本資料型別時,只需要傳入資料型別,預設是大頂堆。

一般是:

1 //公升序佇列

2 priority_queue ,greater> q;

3 //降序佇列

4 priority_queue ,less>q;

5 6 //greater和less是std實現的兩個仿函式(就是使乙個類的使用看上去像乙個函式。其實現就是類中實現乙個operator(),這個類就有了類似函式的行為,就是乙個仿函式類了)

1、基本型別優先佇列的例子:

1 #include2 #include 3 using namespace std;

4 int main()

5 19 while (!a.empty())

20

24 cout << endl;

25 26 while (!c.empty())

27

31 cout << endl;

32 33 b.push("abc");

34 b.push("abcd");

35 b.push("cbd");

36 while (!b.empty())

37

41 cout << endl;

42 return 0;

43 }

執行結果:12

344 3 2 1 0

0 1 2 3 4

cbd abcd abc

請按任意鍵繼續. . .

2、用pair做優先佇列元素的例子:

規則:pair的比較,先比較第乙個元素,第乙個相等比較第二個。

1 #include 2 #include 3 #include 4 using namespace std;

5 int main()

6 19 }

執行結果:12

342 5

1 3

1 2

請按任意鍵繼續. . .

3、用自定義型別做優先佇列元素的例子

1 #include 2 #include 3 using namespace std;

4 5 //方法1

6 struct tmp1 //運算子過載<

7 10 bool operator

11

14 };

15 16 //方法2

17 struct tmp2 //重寫仿函式

18 23 };

24 25 int main()

26 39 cout << endl;

40 41 priority_queue, tmp2> f;

42 f.push(b);

43 f.push(c);

44 f.push(a);

45 while (!f.empty())

46

50 }

執行結果:12

3456

783

2

1

3

2

1

請按任意鍵繼續. . .

PriorityQueue使用介紹

這玩意兒叫優先順序佇列,是乙個類,繼承了abstractqueue類,實現了serializable介面。jdk文件裡是這麼描述這玩意的 基於優先順序堆的無限優先順序queue 優先順序佇列的元素根據它們的有序natural ordering 或由乙個comparator在佇列構造的時候提供,這取決...

C 使用priority queue方法

優先佇列是一種容器介面卡,根據一種嚴格的排序標準,它的第乙個元素一般是在它所包含的元素中最大的。這種情況類似於乙個堆,元素可以隨時插入,只能堆中最大的元素才能被檢索到 那個在優先佇列頂部的元素 優先佇列是作為容器介面卡,實現使用乙個特定的容器類的封裝物件作為它的底層容器,提供一組特定的成員函式來訪問...

priority queue使用方法

優先佇列是一種容器介面卡 容器介面卡的概念本人不會解釋,故此處無法作出說明 它的第乙個元素 位於頭部top 總是佇列中最大的元素,這裡的 最大 是指佇列元素的嚴格弱序中的 最大 嚴格弱序是一系列數或事物按照一定的比較關係 排列得出的序列,可以是數學中進行數值比較的大於,也可以是小於,還可以是其它含義...