類模板
<queue>

std::priority_queue

template <class T, class Container = vector<T>,  class Compare = less<typename Container::value_type> > class priority_queue;
優先佇列
優先佇列是一種容器介面卡,經過專門設計,使其第一個元素始終是它所包含的元素中最大的,這根據某種嚴格弱序標準來判斷。

這個上下文類似於,元素可以在任何時候插入,並且只能檢索到最大堆元素(即優先佇列頂部的元素)。

優先佇列以容器介面卡的形式實現,這些類使用特定容器類的封裝物件作為其底層容器,提供一組特定的成員函式來訪問其元素。元素從特定容器的“後端”彈出,這個位置被稱為優先佇列的頂部

底層容器可以是任何標準容器類模板或一些其他專門設計的容器類。該容器應能透過隨機訪問迭代器訪問,並支援以下操作:
  • empty()
  • size()
  • front()
  • push_back()
  • pop_back()

標準容器類 vectordeque 滿足這些要求。預設情況下,如果某個 priority_queue 類例項化沒有指定容器類,則使用標準容器 vector

需要支援隨機訪問迭代器,以便在任何時候都能在內部保持堆結構。這是透過容器介面卡自動完成的,它會在需要時自動呼叫演算法函式 make_heappush_heappop_heap

模板引數

T
元素的型別。
別名為成員型別 priority_queue::value_type
Container
儲存元素的內部底層容器物件的型別。
value_type 必須是 T
別名為成員型別 priority_queue::container_type
Compare
一個二元謂詞,它接受兩個元素(型別為 T)作為引數並返回一個 bool 值。
表示式 comp(a,b),其中 comp 是此型別的物件,ab 是容器中的元素,如果 a 在該函式定義的嚴格弱序中被認為排在 b 之前,則應返回 true
priority_queue 使用此函式來維護元素的排序,以保持堆屬性(即,被彈出的元素是根據此嚴格弱序排在最後的元素)。
這可以是一個函式指標或一個函式物件,預設為 less<T>,其返回值與應用小於運算子a<b)相同。

成員型別

成員型別定義說明
value_type第一個模板引數 (T)元素的型別
container_type第二個模板引數 (Container)底層容器的型別
size_type一個無符號整數型別通常與 size_t 相同
成員型別定義說明
value_type第一個模板引數 (T)元素的型別
container_type第二個模板引數 (Container)底層容器的型別
引用container_type::reference通常是 value_type&
const_referencecontainer_type::const_reference通常是 const value_type&
size_type一個無符號整數型別通常與 size_t 相同

成員函式


非成員函式過載


非成員類特化