Max heaps are default in C++:
#include <queue>
#include <vector>
// Max heap (default)
priority_queue<pair<int, int>, vector<pair<int, int>>> max_heap;
priority_queue<pair<int, int>, vector<pair<int, int>>, less<pair<int, int>>> max_heap;
Min heaps can be implemented with an additional parameter:
// Min heap
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> min_heap;
Max heaps w/ custom comparator:
// Custom comparator for max heap (greater than)
struct MaxComparator {
bool operator()(const pair<int, int>& a, const pair<int, int>& b) const {
return a.first < b.first; // Compare first element of pairs
}
};
// Max heap with custom comparator
priority_queue<pair<int, int>, vector<pair<int, int>>, MaxComparator> maxHeap;
Min heap w/ custom comparator:
// Custom comparator for min heap (less than)
struct MinComparator {
bool operator()(const pair<int, int>& a, const pair<int, int>& b) const {
return a.first > b.first; // Compare first element of pairs
}
};
// Min heap with custom comparator
priority_queue<pair<int, int>, vector<pair<int, int>>, MinComparator> minHeap;