STL介面卡之priority queue

2021-07-30 06:32:06 字數 722 閱讀 5816

priority_queue本質上也是乙個queue,但在其基礎上加入了權值的概念,入隊依然是依次入隊,但出隊的時候卻是權值最高的元素先出隊,以滿足一些特殊的需求。heap將極值放到頭節點,可以很好的滿足priority_queue的需求。預設情況下,priority_queue使用vector作為底層容器,使用max-heap進行規制處理。

priority_queue是在heap的基礎上進行的封裝,使用起來是很簡潔的,以下是測試**:

int data[9] = ;

priority_queue a(data,data+9);

cout

<<"size:"

while (!a.empty())

cout

《這裡,我們主要關注一下priority_queue的push和pop操作。由於heap演算法本身並不處理資料的插入刪除操作,因而這部分需要交由底層容器進行處理,以下是push和pop的實現原始碼:

void push(const value_type& __x)

__stl_unwind(c.clear());

} void pop()

__stl_unwind(c.clear());

}

這裡實際是容器和演算法結合使用的結果,單獨使用其中乙個是達不到我們想要的目的的。

priority_queue也是對元素使用了特殊的規則進行約束,不提供遍歷操作,也不提供迭代器。

STL之介面卡

注意 需包含標頭檔案 functional 步驟 bind2nd 或者 bind1st 將兩個引數進行繫結 bind2nd 繫結順序是一致 類繼承 binary function 型別1 型別2 返回值型別 加 const 寫法 class myprint public binary functio...

STL之介面卡

摘要 本文主要講了介面卡的一些內容,重要的是了解介面卡使用的步驟。1 include2 include3 include 4 include5 include 67 using namespace std 89 第一步 繫結 資料 bind2nd 10 繼承類 binary function 引數型...

STL之介面卡

摘要 本文主要講了介面卡的一些內容,重要的是了解介面卡使用的步驟。1 include2 include3 include 4 include5 include 67 using namespace std 89 第一步 繫結 資料 bind2nd 10 繼承類 binary function 引數型...