1. 程式人生 > 實用技巧 >C++的優先佇列

C++的優先佇列

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();