std::priority_queue
From cppreference.com
                    
                                        
                    
                    
                                                            
                    | Defined in header  <queue> | ||
| template<     class T, | ||
Priority queue is a container that allows for constant time maximum (or minimum, depending on Compare) extraction at the expense of logarithmic insertion. Working with a priority_queue is similar to managing a  heap in some random access container, with the benefit of not being able to accidentally invalidate the heap.
| Contents | 
[edit] Member types
| Member type | Definition | 
| container_type | Container | 
| value_type | Container::value_type | 
| size_type | Container::size_type | 
| reference | Container::reference | 
| const_reference | Container::const_reference | 
[edit] Member functions
| constructs the priority_queue(public member function) | |
| destructs the priority_queue(public member function) | |
| assigns values to the container adaptor (public member function) | |
| Element access | |
| access the top element (public member function) | |
| Capacity | |
| checks whether the underlying container is empty (public member function) | |
| returns the number of elements (public member function) | |
| Modifiers | |
| inserts element and sorts the underlying container (public member function) | |
| (C++11) | constructs element in-place and sorts the underlying container (public member function) | 
| removes the first element (public member function) | |
| swaps the contents (public member function) | |
| Member objects | |
| 
Container c | the underlying container (protected member object) | 
| 
Compare comp | the comparison function object (protected member object) | 
[edit] Non-member functions
| specializes the std::swap algorithm (function template) | |
[edit] Helper classes
| specializes the std::uses_allocator type trait (function template) | |