是的,C++的PriorityQueue
允許你自定義比較函數(shù)。你可以通過傳遞一個自定義的比較對象(也稱為仿函數(shù))給PriorityQueue
的構(gòu)造函數(shù)來實(shí)現(xiàn)這一點(diǎn)。這個比較對象需要定義一個名為operator()
的成員函數(shù),該函數(shù)接受兩個參數(shù)并返回一個布爾值,用于比較這兩個參數(shù)。
以下是一個使用自定義比較函數(shù)的PriorityQueue
示例:
#include <iostream>
#include <queue>
// 自定義比較函數(shù)對象
struct Compare {
bool operator()(int a, int b) {
return a > b; // 降序排列
}
};
int main() {
// 使用自定義比較函數(shù)創(chuàng)建 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
的結(jié)構(gòu)體,它重載了operator()
函數(shù)以實(shí)現(xiàn)降序排列。然后,我們使用這個比較對象創(chuàng)建了一個PriorityQueue
實(shí)例。注意,我們傳遞了一個std::vector<int>
作為底層容器,因?yàn)?code>PriorityQueue默認(rèn)使用std::vector
作為底層容器。