#include // priority_queue #include class Destination { unsigned int distance; string destination; friend ostream& operator<<(ostream &, const Destination &) ; public: Destination (const string dt, unsigned int ds) : distance(ds), destination(dt) {} bool operator< (const Destination & right) const { return distance < right.distance; } }; ostream & operator << (ostream& os, const Destination & p) { return os << p.destination << " " << p.distance ; } int main() { // keep a priority queue of distances to cities priority_queue < Destination > que; que.push(Destination("halifax", 0)); que.push(Destination("truro", 100)); que.push(Destination("moncton", 230)); while (! que.empty() ) { // remove top entry from queue cout << que.top() << endl; que.pop(); } } /* output moncton 230 truro 100 halifax 0 */