std::priority_queue
是 C++ 標準庫中的一個容器適配器,它提供了一種特殊的隊列,其中元素按照優先級進行排序。在這個隊列中,元素的優先級可以通過比較函數來確定。默認情況下,優先級最高的元素(最大的元素)會被放在隊列的前面。
std::priority_queue
通常使用堆(heap)這種數據結構來實現。堆是一種特殊的二叉樹,其中每個節點都有一個值,并且滿足堆屬性:在最大堆中,每個節點的值都大于或等于其子節點的值;在最小堆中,每個節點的值都小于或等于其子節點的值。
std::priority_queue
提供了以下主要操作:
push()
: 向隊列中添加一個元素。pop()
: 刪除優先級最高的元素(隊列的第一個元素)。top()
: 返回優先級最高的元素,但不刪除它。empty()
: 檢查隊列是否為空。size()
: 返回隊列中的元素數量。注意,std::priority_queue
并不支持隨機訪問迭代器,因此你不能直接訪問隊列中的任意元素。如果你需要這樣的功能,可以考慮使用其他數據結構,如 std::set
或 std::multiset
。
這是一個簡單的 std::priority_queue
示例:
#include<iostream>
#include<queue>
int main() {
std::priority_queue<int> pq;
pq.push(3);
pq.push(1);
pq.push(5);
pq.push(2);
while (!pq.empty()) {
std::cout << pq.top() << " ";
pq.pop();
}
return 0;
}
輸出:
5 3 2 1
這個示例中,我們創建了一個 std::priority_queue
,然后向其中添加了四個整數。當我們從隊列中取出元素時,它們按照優先級從高到低的順序被取出。