Чтобы использовать функцию сравнения в очереди приоритетов в C++, вам необходимо определить специальную функцию сравнения или использовать лямбда-функцию. Функция сравнения определяет порядок, в котором элементы сохраняются и извлекаются из приоритетной очереди на основе определенных критериев.
Вот несколько способов использования функции сравнения в очереди с приоритетом:
Метод 1: определение пользовательской функции сравнения
#include <iostream>
#include <queue>
// Custom comparison function
struct Compare {
bool operator()(int a, int b) {
// Define the comparison logic here
return a > b; // Example: Elements with smaller values have higher priority
}
};
int main() {
std::priority_queue<int, std::vector<int>, Compare> pq; // Use the custom comparison function
// Insert elements into the priority queue
pq.push(5);
pq.push(2);
pq.push(8);
// Retrieve elements from the priority queue
while (!pq.empty()) {
std::cout << pq.top() << " ";
pq.pop();
}
return 0;
}
Метод 2. Использование лямбда-функции
#include <iostream>
#include <queue>
int main() {
// Use a lambda function as the comparison function
std::priority_queue<int, std::vector<int>, decltype([](int a, int b) { return a > b; })> pq;
// Insert elements into the priority queue
pq.push(5);
pq.push(2);
pq.push(8);
// Retrieve elements from the priority queue
while (!pq.empty()) {
std::cout << pq.top() << " ";
pq.pop();
}
return 0;
}
В обоих методах вы можете изменить логику сравнения внутри пользовательской функции сравнения или лямбда-функции в соответствии с вашими требованиями. В примерах показано поведение минимальной кучи, при котором элементы с меньшими значениями имеют более высокий приоритет.