# Heap
[Sorting]

Collaboration diagram for Heap:

## Functions

- template<typename _RandomAccessIterator > bool std::is_heap (_RandomAccessIterator __first, _RandomAccessIterator __last)
- template<typename _RandomAccessIterator , typename _Compare > bool std::is_heap (_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
- template<typename _RandomAccessIterator > _RandomAccessIterator std::is_heap_until (_RandomAccessIterator __first, _RandomAccessIterator __last)
- template<typename _RandomAccessIterator , typename _Compare > _RandomAccessIterator std::is_heap_until (_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
- template<typename _RandomAccessIterator > void std::make_heap (_RandomAccessIterator __first, _RandomAccessIterator __last)
- template<typename _RandomAccessIterator , typename _Compare > void std::make_heap (_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
- template<typename _RandomAccessIterator > void std::pop_heap (_RandomAccessIterator __first, _RandomAccessIterator __last)
- template<typename _RandomAccessIterator , typename _Compare > void std::pop_heap (_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
- template<typename _RandomAccessIterator , typename _Compare > void std::push_heap (_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
- template<typename _RandomAccessIterator > void std::push_heap (_RandomAccessIterator __first, _RandomAccessIterator __last)
- template<typename _RandomAccessIterator , typename _Compare > void std::sort_heap (_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
- template<typename _RandomAccessIterator > void std::sort_heap (_RandomAccessIterator __first, _RandomAccessIterator __last)

## Function Documentation

template<typename _RandomAccessIterator >

bool std::is_heap | ( | _RandomAccessIterator | __first,
|  | _RandomAccessIterator | __last |
| ) |  |  | `[inline]`

Determines whether a range is a heap.

Parameters:

  | first | Start of range.
  | last | End of range.

Returns:
  True if range is a heap, false otherwise.

Definition at line 558 of file stl_heap.h.

References std::is_heap_until().

template<typename _RandomAccessIterator , typename _Compare >

bool std::is_heap | ( | _RandomAccessIterator | __first,
|  | _RandomAccessIterator | __last,
|  | _Compare | __comp |
| ) |  |  | `[inline]`

Determines whether a range is a heap using comparison functor.

Parameters:

  | first | Start of range.
  | last | End of range.
  | comp | Comparison functor to use.

Returns:
  True if range is a heap, false otherwise.

Definition at line 571 of file stl_heap.h.

References std::is_heap_until().

template<typename _RandomAccessIterator >

_RandomAccessIterator std::is_heap_until | ( | _RandomAccessIterator | __first,
|  | _RandomAccessIterator | __last |
| ) |  |  | `[inline]`

Search the end of a heap.

Parameters:

  | first | Start of range.
  | last | End of range.

Returns:
  An iterator pointing to the first element not in the heap.

This operation returns the last iterator i in [first, last) for which the range [first, i) is a heap.

Definition at line 510 of file stl_heap.h.

References std::distance().

template<typename _RandomAccessIterator , typename _Compare >

_RandomAccessIterator std::is_heap_until | ( | _RandomAccessIterator | __first,
|  | _RandomAccessIterator | __last,
|  | _Compare | __comp |
| ) |  |  | `[inline]`

Search the end of a heap using comparison functor.

Parameters:

  | first | Start of range.
  | last | End of range.
  | comp | Comparison functor to use.

Returns:
  An iterator pointing to the first element not in the heap.

This operation returns the last iterator i in [first, last) for which the range [first, i) is a heap. Comparisons are made using comp.

Definition at line 536 of file stl_heap.h.

References std::distance().

Referenced by std::is_heap().

template<typename _RandomAccessIterator >

void std::make_heap | ( | _RandomAccessIterator | __first,
|  | _RandomAccessIterator | __last |
| ) |  |  |

Construct a heap over a range.

Parameters:

  | first | Start of heap.
  | last | End of heap.

This operation makes the elements in [first,last) into a heap.

Definition at line 373 of file stl_heap.h.

template<typename _RandomAccessIterator , typename _Compare >

void std::make_heap | ( | _RandomAccessIterator | __first,
|  | _RandomAccessIterator | __last,
|  | _Compare | __comp |
| ) |  |  |

Construct a heap over a range using comparison functor.

Parameters:

  | first | Start of heap.
  | last | End of heap.
  | comp | Comparison functor to use.

This operation makes the elements in [first,last) into a heap. Comparisons are made using comp.

Definition at line 413 of file stl_heap.h.

Referenced by std::__heap_select(), std::partial_sort_copy(), and std::priority_queue< _Tp, _Sequence, _Compare >::priority_queue().

template<typename _RandomAccessIterator >

void std::pop_heap | ( | _RandomAccessIterator | __first,
|  | _RandomAccessIterator | __last |
| ) |  |  | `[inline]`

Pop an element off a heap.

Parameters:

  | first | Start of heap.
  | last | End of heap.

This operation pops the top of the heap. The elements first and last-1 are swapped and [first,last-1) is made into a heap.

Definition at line 276 of file stl_heap.h.

template<typename _RandomAccessIterator , typename _Compare >

void std::pop_heap | ( | _RandomAccessIterator | __first,
|  | _RandomAccessIterator | __last,
|  | _Compare | __comp |
| ) |  |  | `[inline]`

Pop an element off a heap using comparison functor.

Parameters:

  | first | Start of heap.
  | last | End of heap.
  | comp | Comparison functor to use.

This operation pops the top of the heap. The elements first and last-1 are swapped and [first,last-1) is made into a heap. Comparisons are made using comp.

Definition at line 350 of file stl_heap.h.

Referenced by std::priority_queue< _Tp, _Sequence, _Compare >::pop().

template<typename _RandomAccessIterator , typename _Compare >

void std::push_heap | ( | _RandomAccessIterator | __first,
|  | _RandomAccessIterator | __last,
|  | _Compare | __comp |
| ) |  |  | `[inline]`

Push an element onto a heap using comparison functor.

Parameters:

  | first | Start of heap.
  | last | End of heap + element.
  | comp | Comparison functor.

This operation pushes the element at last-1 onto the valid heap over the range [first,last-1). After completion, [first,last) is a valid heap. Compare operations are performed using comp.

Definition at line 203 of file stl_heap.h.

Referenced by std::priority_queue< _Tp, _Sequence, _Compare >::push().

template<typename _RandomAccessIterator >

void std::push_heap | ( | _RandomAccessIterator | __first,
|  | _RandomAccessIterator | __last |
| ) |  |  | `[inline]`

Push an element onto a heap.

Parameters:

  | first | Start of heap.
  | last | End of heap + element.

This operation pushes the element at last-1 onto the valid heap over the range [first,last-1). After completion, [first,last) is a valid heap.

Definition at line 154 of file stl_heap.h.

template<typename _RandomAccessIterator , typename _Compare >

void std::sort_heap | ( | _RandomAccessIterator | __first,
|  | _RandomAccessIterator | __last,
|  | _Compare | __comp |
| ) |  |  |

Sort a heap using comparison functor.

Parameters:

  | first | Start of heap.
  | last | End of heap.
  | comp | Comparison functor to use.

This operation sorts the valid heap in the range [first,last). Comparisons are made using comp.

Definition at line 481 of file stl_heap.h.

Referenced by std::partial_sort(), and std::partial_sort_copy().

template<typename _RandomAccessIterator >

void std::sort_heap | ( | _RandomAccessIterator | __first,
|  | _RandomAccessIterator | __last |
| ) |  |  |

Sort a heap.

Parameters:

  | first | Start of heap.
  | last | End of heap.

This operation sorts the valid heap in the range [first,last).

Definition at line 452 of file stl_heap.h.