是的,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
作為底層容器。