溫馨提示×

c++ priority_queue的自定義比較函數(shù)

c++
小樊
83
2024-09-04 19:06:08
欄目: 編程語言

在C++中,priority_queue是一個容器適配器,用于實現(xiàn)優(yōu)先級隊列。默認(rèn)情況下,priority_queue的元素按照從大到小的順序排列。如果你想要自定義比較函數(shù),可以通過傳遞一個自定義的比較對象或者函數(shù)指針作為模板參數(shù)來實現(xiàn)。

以下是一個使用自定義比較函數(shù)的例子:

#include<iostream>
#include<queue>
#include<vector>

using namespace std;

// 自定義比較函數(shù)
struct Compare {
    bool operator()(const int &a, const int &b) {
        return a > b; // 從小到大排序
    }
};

int main() {
    // 使用自定義比較函數(shù)創(chuàng)建優(yōu)先級隊列
    priority_queue<int, vector<int>, Compare> pq;

    // 向優(yōu)先級隊列中添加元素
    pq.push(3);
    pq.push(1);
    pq.push(4);
    pq.push(2);

    // 輸出優(yōu)先級隊列中的元素
    while (!pq.empty()) {
        cout << pq.top() << " ";
        pq.pop();
    }

    return 0;
}

輸出結(jié)果:

1 2 3 4

在這個例子中,我們定義了一個名為Compare的結(jié)構(gòu)體,它包含一個重載的operator()函數(shù)。這個函數(shù)接受兩個整數(shù)參數(shù),并返回一個布爾值,表示第一個參數(shù)是否大于第二個參數(shù)。然后我們使用這個自定義比較函數(shù)創(chuàng)建一個優(yōu)先級隊列,并向其中添加一些元素。最后,我們輸出優(yōu)先級隊列中的元素,可以看到它們按照從小到大的順序排列。

0