|
| template<typename _Seq = _Sequence, typename _Requires = typename enable_if<__and_<is_default_constructible<_Compare>, is_default_constructible<_Seq>>::value>::type> |
| | priority_queue () |
| |
| template<typename _InputIterator , typename _Alloc , typename = std::_RequireInputIter<_InputIterator>, typename _Requires = _Uses<_Alloc>> |
| | priority_queue (_InputIterator __first, _InputIterator __last, const _Alloc &__alloc) |
| |
| template<typename _InputIterator , typename = std::_RequireInputIter<_InputIterator>> |
| | priority_queue (_InputIterator __first, _InputIterator __last, const _Compare &__x, _Sequence &&__s) |
| |
| template<typename _InputIterator , typename _Alloc , typename _Requires = _Uses<_Alloc>> |
| | priority_queue (_InputIterator __first, _InputIterator __last, const _Compare &__x, _Sequence &&__s, const _Alloc &__alloc) |
| |
| template<typename _InputIterator , typename _Alloc , typename = std::_RequireInputIter<_InputIterator>, typename _Requires = _Uses<_Alloc>> |
| | priority_queue (_InputIterator __first, _InputIterator __last, const _Compare &__x, const _Alloc &__alloc) |
| |
| template<typename _InputIterator , typename = std::_RequireInputIter<_InputIterator>> |
| | priority_queue (_InputIterator __first, _InputIterator __last, const _Compare &__x, const _Sequence &__s) |
| |
| template<typename _InputIterator , typename _Alloc , typename = std::_RequireInputIter<_InputIterator>, typename _Requires = _Uses<_Alloc>> |
| | priority_queue (_InputIterator __first, _InputIterator __last, const _Compare &__x, const _Sequence &__s, const _Alloc &__alloc) |
| |
| template<typename _InputIterator , typename = std::_RequireInputIter<_InputIterator>> |
| | priority_queue (_InputIterator __first, _InputIterator __last, const _Compare &__x=_Compare()) |
| |
| template<typename _Alloc , typename _Requires = _Uses<_Alloc>> |
| | priority_queue (const _Alloc &__a) |
| |
| template<typename _Alloc , typename _Requires = _Uses<_Alloc>> |
| | priority_queue (const _Compare &__x, _Sequence &&__c, const _Alloc &__a) |
| |
| | priority_queue (const _Compare &__x, _Sequence &&__s=_Sequence()) |
| |
| template<typename _Alloc , typename _Requires = _Uses<_Alloc>> |
| | priority_queue (const _Compare &__x, const _Alloc &__a) |
| |
| template<typename _Alloc , typename _Requires = _Uses<_Alloc>> |
| | priority_queue (const _Compare &__x, const _Sequence &__c, const _Alloc &__a) |
| |
| | priority_queue (const _Compare &__x, const _Sequence &__s) |
| |
| template<typename _Alloc , typename _Requires = _Uses<_Alloc>> |
| | priority_queue (const priority_queue &__q, const _Alloc &__a) |
| |
| template<typename _Alloc , typename _Requires = _Uses<_Alloc>> |
| | priority_queue (priority_queue &&__q, const _Alloc &__a) |
| |
| template<typename... _Args> |
| void | emplace (_Args &&... __args) |
| |
| bool | empty () const |
| |
| void | pop () |
| |
| void | push (const value_type &__x) |
| |
| void | push (value_type &&__x) |
| |
| size_type | size () const |
| |
| void | swap (priority_queue &__pq) noexcept(__and_<//c++1z or gnu++11 __is_nothrow_swappable< _Sequence >, __is_nothrow_swappable< _Compare > >::value) |
| |
| const_reference | top () const |
| |
template<typename _Tp, typename _Sequence = vector<_Tp>, typename _Compare = less<typename _Sequence::value_type>>
class std::priority_queue< _Tp, _Sequence, _Compare >
A standard container automatically sorting its contents.
- Template Parameters
-
| _Tp | Type of element. |
| _Sequence | Type of underlying sequence, defaults to vector<_Tp>. |
| _Compare | Comparison function object type, defaults to less<_Sequence::value_type>. |
This is not a true container, but an adaptor. It holds another container, and provides a wrapper interface to that container. The wrapper is what enforces priority-based sorting and queue behavior. Very few of the standard container/sequence interface requirements are met (e.g., iterators).
The second template parameter defines the type of the underlying sequence/container. It defaults to std::vector, but it can be any type that supports front(), push_back, pop_back, and random-access iterators, such as std::deque or an appropriate user-defined type.
The third template parameter supplies the means of making priority comparisons. It defaults to less<value_type> but can be anything defining a strict weak ordering.
Members not found in normal containers are container_type, which is a typedef for the second Sequence parameter, and push, pop, and top, which are standard queue operations.
- Note
- No equality/comparison operators are provided for priority_queue.
-
Sorting of the elements takes place as they are added to, and removed from, the priority_queue using the priority_queue's member functions. If you access the elements by other means, and change their data such that the sorting order would be different, the priority_queue will not re-sort the elements for you. (How could it know to do so?)
Definition at line 498 of file stl_queue.h.
template<typename _Tp , typename _Sequence = vector<_Tp>, typename _Compare = less<typename _Sequence::value_type>>
template<typename _InputIterator , typename = std::_RequireInputIter<_InputIterator>>
| std::priority_queue< _Tp, _Sequence, _Compare >::priority_queue |
( |
_InputIterator |
__first, |
|
|
_InputIterator |
__last, |
|
|
const _Compare & |
__x = _Compare() |
|
) |
| |
|
inline |
Builds a queue from a range.
- Parameters
-
| __first | An input iterator. |
| __last | An input iterator. |
| __x | A comparison functor describing a strict weak ordering. |
| __s | An initial sequence with which to start. |
Begins by copying __s, inserting a copy of the elements from [first,last) into the copy of __s, then ordering the copy according to __x.
For more information on function objects, see the documentation on functor base classes.
Definition at line 631 of file stl_queue.h.