91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
乡城县| 华池县| 介休市| 左贡县| 景泰县| 华阴市| 江安县| 庆元县| 洛川县| 浦东新区| 图们市| 苏州市| 淳化县| 巴林右旗| 军事| 甘南县| 夏津县| 平利县| 九江县| 通渭县| 措勤县| 黄大仙区| 绥化市| 新蔡县| 新化县| 越西县| 黄冈市| 怀化市| 蒙城县| 肇源县| 成安县| 镇坪县| 鹤壁市| 嘉祥县| 房产| 宜宾市| 万载县| 临夏县| 莱西市| 安康市| 滨州市|