7 template <
class RandomAccessIterator >
8 void make_heap (RandomAccessIterator first, RandomAccessIterator last)
10 raw_array < RandomAccessIterator > stackLowerBound;
11 raw_array < RandomAccessIterator > stackUpperBound;
12 RandomAccessIterator iLowerBound;
13 RandomAccessIterator iUpperBound;
14 RandomAccessIterator iLPos, iUPos, iMPos;
19 stackLowerBound.push(first);
20 stackUpperBound.push(last - 1);
23 iLowerBound = stackLowerBound.pop();
24 iUpperBound = stackUpperBound.pop();
34 if(!(*iMPos < *iUPos))
51 if(!(*iLPos < *iMPos))
65 if(iLowerBound < iMPos - 1)
67 stackLowerBound.push(iLowerBound);
68 stackUpperBound.push(iMPos - 1);
70 if(iMPos + 1 < iUpperBound)
72 stackLowerBound.push(iMPos + 1);
73 stackUpperBound.push(iUpperBound);
75 if(stackLowerBound.get_size() == 0)
82 template <
class RandomAccessIterator,
class Compare>
83 void make_heap (RandomAccessIterator first, RandomAccessIterator last,
86 raw_array < RandomAccessIterator > stackLowerBound;
87 raw_array < RandomAccessIterator > stackUpperBound;
88 RandomAccessIterator iLowerBound;
89 RandomAccessIterator iUpperBound;
90 RandomAccessIterator iLPos, iUPos, iMPos;
95 stackLowerBound.push(first);
96 stackUpperBound.push(last - 1);
99 iLowerBound = stackLowerBound.pop();
100 iUpperBound = stackUpperBound.pop();
110 if(!comp(*iMPos, *iUPos))
127 if(!comp(*iLPos, *iMPos))
141 if(iLowerBound < iMPos - 1)
143 stackLowerBound.push(iLowerBound);
144 stackUpperBound.push(iMPos - 1);
146 if(iMPos + 1 < iUpperBound)
148 stackLowerBound.push(iMPos + 1);
149 stackUpperBound.push(iUpperBound);
151 if(stackLowerBound.get_size() == 0)
158 template <
class RandomAccessIterator,
class Compare>
159 void pop_heap (RandomAccessIterator first, RandomAccessIterator last)
162 make_heap(first, last);
168 make_heap(first, last - 1);
172 template <
class RandomAccessIterator,
class Compare>
173 void pop_heap (RandomAccessIterator first, RandomAccessIterator last, Compare comp)
176 make_heap(first, last, comp);
182 make_heap(first, last - 1, comp);
186 template <
class RandomAccessIterator,
class Compare>
187 void push_heap (RandomAccessIterator first, RandomAccessIterator last)
190 make_heap(first, last);
194 template <
class RandomAccessIterator,
class Compare>
195 void push_heap (RandomAccessIterator first, RandomAccessIterator last, Compare comp)
198 make_heap(first, last, comp);
202 template <
class RandomAccessIterator>
203 void sort_heap (RandomAccessIterator first, RandomAccessIterator last)
205 raw_array < RandomAccessIterator > stackLowerBound;
206 raw_array < RandomAccessIterator > stackUpperBound;
207 RandomAccessIterator iLowerBound;
208 RandomAccessIterator iUpperBound;
209 RandomAccessIterator iLPos, iUPos, iMPos;
212 if(last - first >= 2)
214 stackLowerBound.push(first);
215 stackUpperBound.push(last - 1);
218 iLowerBound = stackLowerBound.pop();
219 iUpperBound = stackUpperBound.pop();
260 if(iLowerBound < iMPos - 1)
262 stackLowerBound.push(iLowerBound);
263 stackUpperBound.push(iMPos - 1);
265 if(iMPos + 1 < iUpperBound)
267 stackLowerBound.push(iMPos + 1);
268 stackUpperBound.push(iUpperBound);
270 if(stackLowerBound.get_size() == 0)
277 template <
class RandomAccessIterator,
class Compare>
278 void sort_heap (RandomAccessIterator first, RandomAccessIterator last, Compare comp )
280 raw_array < RandomAccessIterator > stackLowerBound;
281 raw_array < RandomAccessIterator > stackUpperBound;
282 RandomAccessIterator iLowerBound;
283 RandomAccessIterator iUpperBound;
284 RandomAccessIterator iLPos, iUPos, iMPos;
287 if(last - first >= 2)
289 stackLowerBound.push(first);
290 stackUpperBound.push(last - 1);
293 iLowerBound = stackLowerBound.pop();
294 iUpperBound = stackUpperBound.pop();
304 if(comp(*iMPos, *iUPos))
321 if(comp(*iLPos, *iMPos))
335 if(iLowerBound < iMPos - 1)
337 stackLowerBound.push(iLowerBound);
338 stackUpperBound.push(iMPos - 1);
340 if(iMPos + 1 < iUpperBound)
342 stackLowerBound.push(iMPos + 1);
343 stackUpperBound.push(iUpperBound);
345 if(stackLowerBound.get_size() == 0)
include "aura/graphics/image/context.h"
Definition aaaa__defer.h:32