C++的優先佇列
阿新 • • 發佈:2020-08-13
C++的優先佇列定義在標頭檔案“queue”中,名稱空間是“std”。宣告如下:
std::priority_queue<int> priQue;
預設狀態下,priority_queue的頭部元素是最大的(這和java中的優先佇列剛好相反)。
注意,C++中的priority_queue實際上是一個介面卡,我們可以通過第二個引數指定該介面卡使用何種容器實現:
priority_queue<int, vector<int>> priQue;
我們可以通過第三個引數指定比較方式。預設的比較函式是std::less<T>。如果我們希望priority_queue的頭部元素是最小的,可以將比較函式指定為std::greater<T>:
priority_queue<int, vector<int>, greater<int>> priQue;
或者,我們可以自己定義比較函式,最簡便的方式就是通過lambda表示式定義比較函式:
auto fun = [](const int& a, const int& b)-> bool {return b < a;}; priority_queue<int, vector<int>, decltype(fun)> priQue(fun);
怎樣向priority_queue中新增元素?
priQue.push(1);
怎樣訪問priority_queue的頭部元素?
priQue.top();
注意,priQue.top()僅僅是訪問頭部元素,但是不會將頭部元素從priority_queue中移除。如果想將頭部元素從priority_queue中移除,那麼要呼叫
priQue.pop();