// Using a priority_queue

// Ken Moore 2003

 

#pragma warning(disable : 4786)

#include <iostream>

#include <queue>

#include <string>

using namespace std;

 

// function object comparator

template<class T>// templating is optional

struct comp{

     bool operator()(const T &a,const T &b)const{

        // least to greatest

        return b<a;

        // greatest to least

        // return a<b;

     }

};

 

void main()

{   

    // use my own comparator function

     priority_queue<int, vector<int>, comp<int> > pq;

    // reverse default order

    // priority_queue<int, vector<int>,greater<int> > pq;

 

    // uses the less function and gives reverse order

    //priority_queue<int> pq;

    pq.push(987);

    pq.push(9);

    pq.push(98742);

    pq.push(98);

    while(!pq.empty())

    {

      cout << pq.top() << "\n";

      pq.pop();

    }

}