How to implement Min Heap using STL?
In C++ STL, there is priority_queue that can directly be used to implement Max Heap. In order to fully understand the code, make sure you are familiar with following concepts in C++
See below example:
30 20 10 5 1
Since elements are printed in descending order, we have a max heap by default.
How to implement Min Heap?
priority_queue supports a constructor that requires two extra arguments to make it min-heap.
priority_queue <Type, vector<Type>, ComparisonType > min_heap;
`The third parameter, ‘Comparison Type’ can either be a function or factor (aka function object) that must have bool as return-type and must have 2 arguments.
Below is an example for integers.
1 5 10 20 30
Another method for making min-heap using default priority_queue:
This is frequently used in Competitive Programming. We first multiply all elements with (-1). Then we create a max heap (max heap is the default for priority queue). When we access the data and want to print it we simply multiply those elements with (-1) again.
Below is the implementation of the above idea:
7 9 15 20 25 36 50
How to make a min-heap of user-defined class?
Let us consider below example where we build a min-heap of 2 D points ordered by X-axis.
(1, 5) (2, 1) (10, 2)
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above