C++ priority_queue

// basic usage

#include <queue>

std::priority_queue pq;

pq.push(10);
pq.push(20);
pq.push(1);
pq.push(5);

assert (pq.top() == 20);    pq.pop();
assert (pq.top() == 10);    pq.pop();
assert (pq.top() ==  5);    pq.pop();
assert (pq.top() ==  1);    pq.pop();

assert (pq.empty());
// another example in which we specify both the container and the comparision function
// - by default the comparision function is less<T>

#include <queue>

struct cmp
{
    bool operator() (const int& l, const int& r) const
    {
        if (l < r)
            return true;
        return false;
    }
};

std::priority_queue<int, std::vector<int>, cmp> pq;

pq.push(10);
pq.push(20);
pq.push(1);
pq.push(5);

assert (pq.top() == 20);    pq.pop();
assert (pq.top() == 10);    pq.pop();
assert (pq.top() ==  5);    pq.pop();
assert (pq.top() ==  1);    pq.pop();

assert (pq.empty());