溫馨提示×

c++ priority_queue是什么

c++
小樊
106
2024-09-04 19:03:16
欄目: 編程語言

std::priority_queue 是 C++ 標準庫中的一個容器適配器,它提供了一種特殊的隊列,其中元素按照優先級進行排序。在這個隊列中,元素的優先級可以通過比較函數來確定。默認情況下,優先級最高的元素(最大的元素)會被放在隊列的前面。

std::priority_queue 通常使用堆(heap)這種數據結構來實現。堆是一種特殊的二叉樹,其中每個節點都有一個值,并且滿足堆屬性:在最大堆中,每個節點的值都大于或等于其子節點的值;在最小堆中,每個節點的值都小于或等于其子節點的值。

std::priority_queue 提供了以下主要操作:

  • push(): 向隊列中添加一個元素。
  • pop(): 刪除優先級最高的元素(隊列的第一個元素)。
  • top(): 返回優先級最高的元素,但不刪除它。
  • empty(): 檢查隊列是否為空。
  • size(): 返回隊列中的元素數量。

注意,std::priority_queue 并不支持隨機訪問迭代器,因此你不能直接訪問隊列中的任意元素。如果你需要這樣的功能,可以考慮使用其他數據結構,如 std::setstd::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,然后向其中添加了四個整數。當我們從隊列中取出元素時,它們按照優先級從高到低的順序被取出。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女