Min priority_queue in C++
--
In C++, the default STL (Standard Template Library) priority queue is Max priority queue (returns the largest element).
Output : 3 2 1
Here, we’re getting the highest of the current values. This is a max priority queue. We can use this priority queue as Min priority queue by applying some interesting tricks. Let’s start!
1. Using greater
as comparison function :
Output : 1 2 3
Now, we’re getting the minimum value first!
2. Using opposite sign
We can obtain min priority queue by inserting values by changing sign (using minus (-) for positive number and using plus (+) for negative number :
Output : -4 1 2 3
Look at the line number 13. We need to negate the value (again) to get the original value.
3. Using custom structure or class :
Output : 1 2 3
Actually, Using custom structure or class we can use priority_queue in any order.
Suppose, we want to sort people in descending order according to their salary and if tie then according to their age.
Output :
80 40
100 40
100 50
Same result can be obtained by operator overloading :
Output :
80 40
100 40
100 50
So, we can use C++ priority queue as our requirement by using these interesting tricks! :)