溫馨提示×

C++ PriorityQueue 能否自定義比較函數

c++
小樊
125
2024-10-14 18:29:08
欄目: 編程語言

是的,C++的PriorityQueue允許你自定義比較函數。你可以通過傳遞一個自定義的比較對象(也稱為仿函數)給PriorityQueue的構造函數來實現這一點。這個比較對象需要定義一個名為operator()的成員函數,該函數接受兩個參數并返回一個布爾值,用于比較這兩個參數。

以下是一個使用自定義比較函數的PriorityQueue示例:

#include <iostream>
#include <queue>

// 自定義比較函數對象
struct Compare {
    bool operator()(int a, int b) {
        return a > b; // 降序排列
    }
};

int main() {
    // 使用自定義比較函數創建 PriorityQueue
    std::priority_queue<int, std::vector<int>, Compare> pq;

    // 向 PriorityQueue 中添加元素
    pq.push(5);
    pq.push(3);
    pq.push(8);
    pq.push(1);

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

    return 0;
}

在這個示例中,我們定義了一個名為Compare的結構體,它重載了operator()函數以實現降序排列。然后,我們使用這個比較對象創建了一個PriorityQueue實例。注意,我們傳遞了一個std::vector<int>作為底層容器,因為PriorityQueue默認使用std::vector作為底層容器。

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