Developing Data Structures
A priority queue maintains elements in order, providing fast access to the topmost value.
priority_queue< vector<Destination>, lesser<Destination> > que;
// put starting city in queue
que.push (Destination(startingCity, 0));