C++中的priority_queue
是一個容器適配器,用于實現優先級隊列。優先級隊列允許我們在隊列中插入元素,并按照元素的優先級進行排序。以下是priority_queue
的一些常用操作:
std::priority_queue<int> pq; // 創建一個空的優先級隊列,存儲int類型的元素
pq.push(5); // 將元素5插入到優先級隊列中
pq.pop(); // 刪除優先級最高(默認為最大)的元素
注意:pop()
操作只會刪除優先級最高的元素,而不會返回它。如果你想要獲取被刪除的元素,需要在調用pop()
之前調用top()
。
int topElement = pq.top(); // 返回優先級最高的元素,但不刪除它
bool isEmpty = pq.empty(); // 如果優先級隊列為空,返回true;否則返回false
size_t size = pq.size(); // 返回優先級隊列中的元素數量
默認情況下,priority_queue
使用std::less
比較函數對元素進行排序,這意味著優先級最高的元素是最大的。如果你想要改變這種行為,例如使優先級最高的元素成為最小的,你可以提供自定義的比較函數。
std::priority_queue<int, std::vector<int>, std::greater<int>> minPQ; // 創建一個優先級隊列,優先級最高的元素是最小的
priority_queue
還支持其他操作,如emplace()
(原地構造元素并插入隊列)和swap()
(交換兩個優先級隊列的內容),但它們的使用場景相對較少。
請注意,priority_queue
不支持隨機訪問迭代器,因此你不能直接訪問隊列中的任意元素。如果你需要這樣做,可能需要考慮使用其他數據結構,如std::set
或std::multiset
。