|
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.