優先佇列的使用

2021-06-23 03:09:40 字數 2872 閱讀 1579

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

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

基本操作:

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}

優先佇列的使用

堆,一種非常重要的資料結構。能實現資料的自動排序,而且排序時間複雜度為o nlogn 在n達到10 4時,o n2 級演算法就容易超時,但堆排序不會。堆可呼叫stl系統函式,簡化 容易書寫。一般情況,如果堆元素為數 字元 字串都可有用預設的排序規則。如果元素是pair型別,其比較大小的方式為先比較第...

優先佇列的使用(模板)

這個是轉得網上的,由於不經常使用,偶爾用的時候還經常出錯,所以記下來了,經常使用的已經用紅色顏色標出來了 在優先佇列中,優先順序高的元素先出佇列。標準庫預設使用元素型別的 操作符來確定它們之間的優先順序關係。優先佇列的第一種用法,也是最常用的用法 priority queueqi 通過 操作符可知在...

優先佇列priority queue的使用方法

以下內容摘自 priority queue 優先順序佇列是乙個擁有權值概念的單向佇列queue,在這個佇列中,所有元素是按優先順序排列的 也可以認為queue是個按進入佇列的先後做為優先順序的優先順序佇列 先進入佇列的元素優先權要高於後進入佇列的元素 在計算機作業系統中,優先順序佇列的使用是相當頻繁...