Шаг 17.
Библиотека STL.
Алгоритмы

    На этом шаге мы приведем общие сведения об алгоритмах.

    Алгоритмы обрабатывают данные, содержащиеся в контейнерах. Несмотря на то, что каждый контейнер обеспечивает поддержку собственных базовых операций, стандартные алгоритмы позволяют выполнять более расширенные или более сложные действия. Они также позволяют работать с двумя различными типами контейнеров одновременно. Для получения доступа к алгоритмам библиотеки STL необходимо включить в программу заголовок <algorithm>.

    В библиотеке STL определено множество алгоритмов, которые описаны в таблице 1. Все эти алгоритмы представляют собой шаблонные функции. Это означает, что их можно применять к контейнеру любого типа.

Таблица 1. Алгоритмы
Алгоритм Назначение
adjacent_find Выполняет поиск совпадающих смежных элементов внутри последовательности и возвращает итератор для первого найденного совпадения
binary_search Выполняет двоичный поиск заданного значения внутри упорядоченной последовательности
copy Копирует последовательность
copy_backward Аналогичен алгоритму copy, за исключением того, что копирование происходит в обратном порядке, т.е. сначала перемещаются элементы, находящиеся в конце последовательности
count Возвращает количество элементов с заданным значением в последовательности
count_if Возвращает количество элементов, которые удовлетворяют заданному предикату
equal Определяет одинаковы ли два диапазона
equal_range Возвращает диапазон, в который можно вставить элемент, не нарушая порядок некоторой последовательности
fill и fill_n Заполняют диапазон заданным значением
find В заданном диапазоне выполняет поиск заданного значения и возвращает итератор для первого вхождения найденного элемента
find_end В заданном диапазоне выполняет поиск заданной последовательности. Возвращает итератор, соответствующий концу искомой последовательности
find_first_of Выполняет поиск первого элемента внутри заданной последовательности, который совпадает с любым элементом из заданного диапазона
find_if В заданном диапазоне выполняет поиск элемента, для которого определенный пользователем унарный предикат возвращает значение true
for_each Применяет заданную функцию к заданному диапазону элементов
generate и generate_n Присваивают значения, возвращаемые некоторой функцией генератором, элементам из заданного диапазона
includes Устанавливает факт включения всех элементов одной заданной последовательности в другую заданную последовательность
inplace_merge Объединяет один заданный диапазон с другим. Оба диапазона должны быть отсортированы в порядке возрастания. После выполнения алгоритма полученная последовательность сортируется в порядке возрастания
iter_swap Меняет местами значения, адресуемые итераторами, которые передаются в качестве параметров
lexicographical_compare Сравнивает одну заданную последовательность с другой в лексикографическом порядке
lower_bound Выполняет поиск первого элемента в заданной последовательности, значение которого не меньше заданного значения
make_heap Создает кучу из заданной последовательности
max Возвращает максимальное из двух значений
max_element Возвращает итератор для максимального элемента внутри заданного диапазона
merge Объединяет две упорядоченные последовательности, помещая результат в третью последовательность
min Возвращает минимальное из двух значений
min_element Возвращает итератор для минимального элемента внутри заданного диапазона
mismatch Выполняет поиск первого несовпадения элементов в двух последовательностях и возвращает итераторы для этих двух элементов
next_permutation Создает следующую перестановку заданной последовательности
nth_element Упорядочивает заданную последовательность таким образом, чтобы все элементы, значения которых меньше значения E, размещались перед этим элементом, а все элементы, значения которых больше значения E, размещались после него
partial_sort Сортирует заданный диапазон
partial_sort_copy Сортирует заданный диапазон, а затем копирует столько элементов, сколько может поместиться в результирующую последовательность
partition Сортирует заданную последовательность таким образом, чтобы все элементы, для которых заданный предикат возвращает значение true, размещались перед элементами, для которых этот предикат возвращает значение false
pop_heap Меняет местами первый и предпоследний элементы заданного диапазона, а затем перестраивает кучу
prev_permutation Создает предыдущую перестановку последовательности
push_heap Помещает элемент в конец кучи
random_shuffle Придает случайный характер заданной последовательности
remove, remove_if,
remove_copy
и remove_copy_if
Удаляют элементы из заданного диапазона
replace, replace_copy,
replace_if и replace_copy_if
Заменяют заданные элементы из диапазона другими элементами
reverse и reverse_copy Меняет порядок следования элементов в заданном диапазоне на противоположный
rotate и rotate_copy Выполняет циклический сдвиг влево элементов в заданном диапазоне
search Выполняет поиск одной последовательности внутри другой
search_n Внутри некоторой последовательности выполняет поиск заданного числа подобных элементов
set_difference Создает последовательность, которая содержит разность двух упорядоченных множеств
set_intersection Создает последовательность, которая содержит пересечение двух упорядоченных множеств
set_symmetric_difference Создает последовательность, которая содержит симметричную разность двух упорядоченных множеств
set_union Создает последовательность, которая содержит объединение двух упорядоченных множеств
sort Сортирует заданный диапазон
sort_heap Сортирует кучу в заданном диапазоне
stable_partition Упорядочивает заданную последовательность таким образом, чтобы все элементы, для которых заданный предикат возвращает значение true, размещались перед элементами, для которых этот предикат возвращает false. Такое разбиение является стабильным, что означает сохранение относительного порядка последовательности
stable_sort Выполняет устойчивую (стабильную) сортировку заданного диапазона. Это значит, что равные элементы не переставляются
swap Меняет местами заданные два значения
swap_ranges Выполняет обмен элементов в заданном диапазоне
transform Применяет функцию к заданному диапазону элементов и сохраняет результат в новой последовательности
unique и unique_copy Удаляет повторяющиеся элементы из заданного диапазона
upper_bound Находит последний элемент в заданной последовательности, который не больше заданного значения

    На следующем шаге мы рассмотрим пример использования некоторых из перечисленных алгоритмов.




Предыдущий шаг Содержание Следующий шаг