亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C++ PriorityQueue 如何實現優先級排序

c++
小樊
82
2024-10-14 18:26:11
欄目: 編程語言

在 C++ 中,priority_queue 是一個容器適配器,它提供了優先級隊列的數據結構。priority_queue 默認是一個最大堆(max heap),也就是說,隊列頂部的元素總是最大的。如果你想要實現最小堆(min heap),你可以傳遞一個比較函數給 priority_queue 的構造函數。

下面是一個使用 priority_queue 實現優先級排序的例子:

#include <iostream>
#include <queue>

int main() {
    // 創建一個最大堆
    std::priority_queue<int> pq;

    // 向堆中添加元素
    pq.push(3);
    pq.push(1);
    pq.push(4);
    pq.push(1);
    pq.push(5);
    pq.push(9);
    pq.push(2);
    pq.push(6);
    pq.push(5);
    pq.push(3);
    pq.push(5);

    // 輸出堆中的元素
    while (!pq.empty()) {
        std::cout << pq.top() << " ";
        pq.pop();
    }

    return 0;
}

在這個例子中,我們創建了一個 priority_queue<int>,然后向其中添加了一些整數。由于 priority_queue 是一個最大堆,所以隊列頂部的元素總是最大的。因此,當我們輸出堆中的元素時,它們是按照從大到小的順序排列的。

如果你想要實現最小堆,你可以傳遞一個比較函數給 priority_queue 的構造函數,如下所示:

#include <iostream>
#include <queue>

int main() {
    // 創建一個最小堆
    std::priority_queue<int, std::vector<int>, std::greater<int>> pq;

    // 向堆中添加元素
    pq.push(3);
    pq.push(1);
    pq.push(4);
    pq.push(1);
    pq.push(5);
    pq.push(9);
    pq.push(2);
    pq.push(6);
    pq.push(5);
    pq.push(3);
    pq.push(5);

    // 輸出堆中的元素
    while (!pq.empty()) {
        std::cout << pq.top() << " ";
        pq.pop();
    }

    return 0;
}

在這個例子中,我們創建了一個 priority_queue<int, std::vector<int>, std::greater<int>>,其中 std::greater<int> 是一個比較函數,它會導致 priority_queue 成為一個最小堆。因此,當我們輸出堆中的元素時,它們是按照從小到大的順序排列的。

0
左云县| 平顶山市| 凌云县| 台中县| 祁连县| 恭城| 西宁市| 炎陵县| 河北省| 连平县| 青田县| 伊通| 邵武市| 湾仔区| 金乡县| 海林市| 龙里县| 同仁县| 灵寿县| 平陆县| 余姚市| 龙游县| 新巴尔虎左旗| 张家口市| 全椒县| 红原县| 文山县| 年辖:市辖区| 承德市| 神木县| 雅安市| 陆丰市| 洮南市| 安新县| 聂荣县| 济南市| 盘山县| 高要市| 锡林郭勒盟| 文山县| 和硕县|