C++ Priority Queues are like queues, but the elements inside the queue are ordered by some predicate.
| Constructors | construct a new priority queue | 
| empty | true if the priority queue has no elements | 
| pop | removes the top element of a priority queue | 
| push | adds an element to the end of the priority queue | 
| size | returns the number of items in the priority queue | 
| top | returns the top element of the priority queue |