template<class RandomAccessRange> RandomAccessRange& push_heap(RandomAccessRange& rng); template<class RandomAccessRange> const RandomAccessRange& push_heap(const RandomAccessRange& rng); template<class RandomAccessRange, class Compare> RandomAccessRange& push_heap(RandomAccessRange& rng, Compare pred); template<class RandomAccessRange, class Compare> const RandomAccessRange& push_heap(const RandomAccessRange& rng, Compare pred);
push_heap
adds an element
to a heap. It is assumed that begin(rng)
, prior(end(rng))
is already a heap and that the element
to be added is *prior(end(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)
[begin(rng), prior(end(rng)))
is a heap.
Logarithmic. At most log(distance(rng))
comparisons.