47#ifndef _RWSTD_RW_HEAP_H_INCLUDED
48#define _RWSTD_RW_HEAP_H_INCLUDED
50#ifndef _RWSTD_RW_ALGOBASE_H_INCLUDED
54#ifndef _RWSTD_RW_ITERBASE_H_INCLUDED
66template <
class _RandomAccessIter,
class _Dist,
class _TypeT,
68void __push_heap (_RandomAccessIter, _Dist, _Dist, _TypeT, _Compare);
71template <
class _RandomAccessIter,
class _Dist,
class _Compare>
73__push_heap (_RandomAccessIter __first, _RandomAccessIter __last,
74 _Dist*, _Compare __comp)
76 __push_heap (__first, _Dist (__last - __first), _Dist (), *__last, __comp);
80template <
class _RandomAccessIter,
class _Compare>
81inline void push_heap (_RandomAccessIter __first, _RandomAccessIter __last,
86 if (!(__first == __last))
87 __push_heap (__first, --__last,
93template <
class _RandomAccessIter>
94inline void push_heap (_RandomAccessIter __first, _RandomAccessIter __last)
96 _STD::push_heap (__first, __last,
_RWSTD_LESS (_RandomAccessIter));
101template <
class _RandomAccessIter,
class _Dist,
class _TypeT,
103void __adjust_heap (_RandomAccessIter, _Dist, _Dist, _TypeT, _Compare);
107template <
class _RandomAccessIter,
class _TypeT,
class _Compare,
class _Dist>
109__pop_heap (_RandomAccessIter __first, _RandomAccessIter __last,
110 _RandomAccessIter __res, _TypeT __val, _Compare __cmp, _Dist*)
113 __adjust_heap (__first, _Dist (), _Dist (__last - __first), __val, __cmp);
118template <
class _RandomAccessIter,
class _Compare>
120pop_heap (_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp)
124 if (!(__first == __last)) {
126 __pop_heap (__first, __last, __last, *__last, __comp,
133template <
class _RandomAccessIter>
134inline void pop_heap (_RandomAccessIter __first, _RandomAccessIter __last)
136 _STD::pop_heap (__first, __last,
_RWSTD_LESS (_RandomAccessIter));
141template <
class _RandomAccessIter,
class _Compare,
class _Dist>
142void __make_heap (_RandomAccessIter, _RandomAccessIter, _Compare, _Dist*);
146template <
class _RandomAccessIter,
class _Compare>
147inline void make_heap (_RandomAccessIter __first, _RandomAccessIter __last,
152 if (!(__last - __first < 2))
153 __make_heap (__first, __last, __comp,
159template <
class _RandomAccessIter>
160inline void make_heap (_RandomAccessIter __first, _RandomAccessIter __last)
162 _STD::make_heap (__first, __last,
_RWSTD_LESS (_RandomAccessIter));
167template <
class _RandomAccessIter,
class _Compare>
168inline void sort_heap (_RandomAccessIter __first, _RandomAccessIter __last,
173 for (; __last - __first > 1; --__last)
174 _STD::pop_heap (__first, __last, __comp);
179template <
class _RandomAccessIter>
180inline void sort_heap (_RandomAccessIter __first, _RandomAccessIter __last)
182 _STD::sort_heap (__first, __last,
_RWSTD_LESS (_RandomAccessIter));
189#ifdef _RWSTD_NO_IMPLICIT_INCLUSION
#define _RWSTD_LESS(ignore)
#define _RWSTD_NAMESPACE(name)
#define _RWSTD_ASSERT_RANGE(ign1, ign2)
#define _RWSTD_DIFFERENCE_TYPE(iterT)