priority queue(優先佇列)使用方法

2022-05-02 04:30:07 字數 689 閱讀 9373

priority_queue預設是乙個大根堆:

並且出隊方式與普通佇列queue的front不一樣,是top 。

如果想用小根堆,可以修改定義時的引數:

priority_queue,greater > pq;
除了指定模板為int之外,還指定了構造的容器是vector,過載的運算子是greater(大於)運算子。

下面我們來看結構體。

首先我們定義結構體:

typedef struct

node

bool

operator

< (const node& obj) const

};

我們過載了小於符號(在cpp中,一般來說都是過載小於符號。比如 set、map 記錄結構體,sort時定義的cmp函式其實也是小於符號的定義),並且priority_queue也一如既往的執行著它輸出最大值的操作:

如果我們需要小根堆,只需要把過載的小於符號的判斷條件改一下就好了。

注意:在執行top之前必須保證非空,不然會報錯。

priority queue 優先佇列)

佇列 先輸入先輸出 優先佇列使用方法 標頭檔案 include using namespace std 宣告方法 1.普通方法 priority queueq 下劃線不可漏,預設從大到小輸出隊 2.結構體宣告方式 struct node int x,y frinend bool operator n...

優先佇列 priority queue

優先佇列 是一種抽象資料型別,行為有些像佇列,但是他不是先進先出型佇列 先出優先佇列的元素是佇列中優先順序最高的元素。就像 急診病人插隊 優先佇列的標頭檔案也是 用 priority queuepq 來宣告。這個pq是乙個越小的整數優先順序越低的優先佇列。出隊元素不是先進隊的元素,出隊的方法由que...

優先佇列 PriorityQueue

import queue q queue.priorityqueue q.put 1 新增元素 q.get 刪除元素 python的優先佇列基於最小堆實現。heap 堆 是乙個除了底層節點外的完全填滿的二叉樹,底層可以不完全,左到右填充節點。而最小堆意味著,任一非終端節點的資料值均不大於其左子節點和...