在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)先級隊列中的元素,可以看到它們按照從小到大的順序排列。