STL中優先佇列的使用

2021-06-29 03:41:48 字數 2891 閱讀 7947

佇列的特點是先進先出。通常都把佇列比喻成排隊買東西,大家都很守秩序,先排隊的人就先買東西。但是優先佇列有所不同,它不遵循先進先出的規則,而是根據佇列中元素的優先權,優先權最大的先被取出。通常把優先佇列比喻成現實生活中的列印。乙個列印店裡有很多印表機,每台機器的效能不一樣,有的印表機列印很快,有的印表機列印速度很慢。當這些印表機陸陸續續列印完自己的任務時進入排隊等候狀態。如果我這個時候要列印乙份檔案,我選的不是第乙個排隊的印表機,而是效能最好,列印最快的印表機。

重點:優先順序佇列,是要看優先順序的,誰的優先順序更高,誰就先得到許可權。不分排隊的順序!

基本操作:

empty() 如果隊列為空返回真

pop() 刪除對頂元素

push() 加入乙個元素

size() 返回優先佇列中擁有的元素個數

top() 返回優先佇列對頂元素

在預設的優先佇列中,優先順序高的先出隊。在預設的int型中先出隊的為較大的數。

使用方法:

標頭檔案:

#include

宣告方式:

1、普通方法:

priority_queueq;

//通過操作,按照元素從大到小的順序出隊

2、自定義優先順序:

struct cmp

};priority_queue, cmp>q;//定義方法

//其中,第二個引數為容器型別。第三個引數為比較函式。

3、結構體宣告方式:

struct node

}; priority_queueq;//定義方法

//在該結構中,y為值, x為優先順序。

//通過自定義operator《操作符來比較元素中的優先順序。

//在過載」<」時,最好不要過載」>」,可能會發生編譯錯誤

示例:01#include "iostream"

02#include "vector"

03#include "queue"

04usingnamespacestd;

05intc[100];

06structcmp1

07

12};

13

14structcmp2

15

22};

23

24structnode

25

31};

32

33priority_queue<int>q1;

34priority_queue<int, vector<int>, cmp1>q2;

35priority_queue<int, vector<int>, cmp2>q3;

36priority_queueq4;

37

38queue<int>qq1;

39queueqq2;

40

41intmain()

42

53cout << endl;

54while(!q4.empty())

55

59//    cout << endl;

60}

61return0;

62}

stl中優先佇列的使用

STL中優先佇列的使用

佇列的特點是先進先出。通常都把佇列比喻成排隊買東西,大家都很守秩序,先排隊的人就先買東西。但是優先佇列有所不同,它不遵循先進先出的規則,而是根據佇列中元素的優先權,優先權最大的先被取出。通常把優先佇列比喻成現實生活中的列印。乙個列印店裡有很多印表機,每台機器的效能不一樣,有的印表機列印很快,有的印表...

STL中棧 佇列和優先佇列的使用

stl standard template library,即標準模板庫,stl可分為容器 containers 迭代器 iterators 空間配置器 allocator 配接器 adapters 演算法 algorithms 仿函式 functors 六個部分。其中,容器分為三類 序列式容器,容...

STL 優先佇列 簡明使用

定義 每次top 出來的,都是佇列中優先順序最高的。但,注意,佇列中個元素的相對位置不變。標頭檔案 宣告方式 priority queuename 注 type 可以是任意型別,但是非內建型別需要自己寫輔助比較函式 過載 號也是可以的,因為優先佇列內部是通過 去比較大小的,但是 不行。建議用過載 的...