Priority queue for user-defined types

Programmer picture Programmer · Feb 7, 2012 · Viewed 34.7k times · Source

I have the below struct

struct node{
   float val;
   int count;

}

I have several objects of this struct. Now, I want to insert these objects into a priority queue of STL such that the priority queue orders the items by count. Any idea on how to do so? Preferably a min heap is preferred. I know how to do the above for primitive data types, not structs

Answer

Ivaylo Strandjev picture Ivaylo Strandjev · Feb 7, 2012

Overload the < operator:

bool operator<(const node& a, const node& b) {
  return a.count > b.count;
}

I have reversed the comparison to achieve min heap wihtout passing extra arguments to the priority queue. Now you use it like this:

priority_queue<node> pq;
...

Edit: take a look at this post which seems to be almost exact duplicate: STL Priority Queue on custom class