C 優先佇列 priority queue

2021-10-24 02:35:00 字數 2117 閱讀 9206

包含標頭檔案#include

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

在優先佇列(priority_queue)中,元素被賦予優先順序。當訪問元素時,具有最高優先順序的元素排在佇列前面,優先出隊。

預設的情況下,priority_queue是利用乙個最大堆(max-heap)來完成優先順序自動排序的功能。

// 以下用到的make_heap(), push_heap(),pop_heap()都是泛型演算法

// 注意,任何乙個建構函式都立刻於底層容器內產生乙個implicitrepresentation heap。

type為資料型別, container為儲存資料的容器,functional為元素比較方式。

如果不寫後兩個引數,那麼容器預設用的是vector,比較方式預設用operator

//公升序佇列

priority_queue ,greater> q;

//降序佇列

priority_queue ,less>q;

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

例項一

參考:

用二叉堆實現優先佇列 Priority Queue

優先佇列出隊跟佇列一樣,從隊首出隊 但隊內的次序由優先順序決定,即優先順序高的資料項可以插隊,排到前面。二叉堆能夠將優先佇列的入隊和出隊複雜度都保持在o logn 完全二叉樹,如果用順序表來表示的話,設根節點下標為1,若某節點下標為p,則其左子節點下標為2p,右子節點下標為2p 1,父節點下標為p ...

C 優先佇列

半題外話 優先佇列個人認為主要優點是可以在排序後進行類似於插入排序的操作,適合於需要在陣列排序後再次進行操作的題目 再由此產生一堆bug 本蒟蒻是在敲貪心的題時遇見的 弱得連個貪心都不會敲了呵 就開始了學 mo 習 ca 之旅 優先佇列的結構 佇列1.back 返回乙個引用,指向最後乙個元素 2.e...

c 優先佇列

優先佇列容器與佇列一樣,只能從隊尾插入元素,從隊首刪除元素。但是它有乙個特性,就是佇列中最大的元素總是位於隊首,所以出隊時,並非按照先進先出的原則進行,而是將當前佇列中最大的元素出隊。這點類似於給佇列裡的元素進行了由大到小的順序排序。元素的比較規則預設按元素值由大到小排序,可以過載 操作符來重新定義...