void pop_heap(RandomAccessIterator first, RandomAccessIterator last);
template ‹class RandomAccessIterator, class Compare›
void pop_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp);
pop_heap полагает, что диапазон [first, last) является соответствующей пирамидой, затем обменивает значения в позициях first и last-1 и превращает [first, last-1) в пирамиду. Выполняется максимально 2*log(last-first) сравнений.
template ‹class RandomAccessIterator›
void make_heap(RandomAccessIterator first, RandomAccessIterator last);
template ‹class RandomAccessIterator, class Compare›
void make_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp);
make_heap создает пирамиду из диапазона [first, last). Выполняется максимально 3*(last-first) сравнений.
template ‹class RandomAccessIterator›
void sort_heap(RandomAccessIterator first, RandomAccessIterator last);
template ‹class RandomAccessIterator, class Compare›
void sort_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp);
sort_heap сортирует элементы в пирамиде [first, last). Выполняется максимально NlogN сравнений, где N равно last-first. sort_heap не устойчив.
Минимум и максимум (Minimum and maximum)
template ‹class T›
const T& min(const T& a, const T& b);
template ‹class T, class Compare›
const T& min(const T& a, const T& b, Compare comp);
template ‹class T›
const T& max(const T& a, const T& b);
template ‹class T, class Compare›
const T& max(const T& a, const T& b, Compare comp);
min возвращает меньшее, а max большее. min и max возвращают первый параметр, когда их параметры равны.
template ‹class ForwardIterator›
ForwardIterator max_element(ForwardIterator first, ForwardIterator last);
template ‹class ForwardIterator, class Compare›
ForwardIterator max_element(ForwardIterator first, ForwardIterator last, Compare comp);
max_element возвращает первый такой итератор i в диапазоне [first, last), что для любого итератора j в диапазоне [first, last) выполняются следующие соответствующие условия: !(*i‹*j) или comp(*i, *j)==false. Выполняется точно max((last-first)-1, 0) соответствующих сравнений.
template ‹class ForwardIterator›
ForwardIterator min_element(ForwardIterator first, ForwardIterator last);
template ‹class ForwardIterator, class Compare›
ForwardIterator min_element(ForwardIterator first, ForwardIterator last, Compare comp);
min_element возвращает первый такой итератор i в диапазоне [first, last), что для любого итератора j в диапазоне [first, last) выполняются следующие соответствующие условия: !(*j‹*i) или comp(*j, *i)==false. Выполняется точно max((last-first)-1, 0) соответствующих сравнений.
Лексикографическое сравнение (Lexicographical comparison)
template ‹class InputIterator1, class InputIterator2›
bool lexicographical_compare(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2);
template ‹class InputIterator1, class InputIterator2, class Compare›
bool lexicographical_compare(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, Compare comp);