template<class RandomAccessRange> RandomAccessRange& pop_heap(RandomAccessRange& rng); template<class RandomAccessRange> const RandomAccessRange& pop_heap(const RandomAccessRange& rng); template<class RandomAccessRange, class Compare> RandomAccessRange& pop_heap(RandomAccessRange& rng, Compare pred); template<class RandomAccessRange, class Compare> const RandomAccessRange& pop_heap(const RandomAccessRange& rng, Compare pred);
pop_heap
removes the
largest element from the heap. It is assumed that begin(rng), prior(end(rng))
is already a heap (and therefore the
largest element is *begin(rng)
).
The ordering relationship is determined by using operator<
in the non-predicate versions, and
by evaluating pred
in
the predicate versions.
Defined in the header file boost/range/algorithm/heap_algorithm.hpp
For the non-predicate versions:
RandomAccessRange
is a model of the Random
Access Range Concept.
RandomAccessRange
is mutable.
RandomAccessRange
's
value type is a model of the LessThanComparableConcept
.
RandomAccessRange
's
value type is a strict weak ordering,
as defined in the LessThanComparableConcept
requirements.
For the predicate versions:
RandomAccessRange
is a model of the Random
Access Range Concept.
RandomAccessRange
is mutable.
Compare
is a model
of the StrictWeakOrderingConcept
.
RandomAccessRange
's
value type is convertible to both of Compare
's
argument types.
!empty(rng)
rng
is a heap.
Logarithmic. At most 2 *
log(distance(rng))
comparisons.