The Standard Template Library defines a specialized form of the queue<> container called priority_queue<>. A priority_queue is a queue whose elements are internally sorted according to their priority. Thus, an element with the highest priority is located at the top. To qualify as an element of priority_queue<>, an object has to define the < operator. For example:
#include <functional> // definition of less<>
#include <queue> // definition of priority_queue<>
#include <iostream>
using namespace std;
struct Task
{
int priority;
friend bool operator < (const Task& t1, const Task& t2);
Task(int p=0) : priority(p) {}
};
bool operator < (const Task& t1, const Task& t2)
{
return t1.priority < t2.priority;
}
int main()
{
priority_queue<Task> scheduler;
scheduler.push(Task(3));
scheduler.push(Task(5));
scheduler.push(Task(1));
cout<< scheduler.top().priority <<endl; // output 5
}