Алгоритмы STL
Материал из cppreference.com
< cpp
Следующие функции определены в <algorithm> или <numeric>, и являются составляющими пространства имен std.
Не модифицирующие операции | |
---|---|
accumulate | складывает диапазон элементов |
adjacent_difference | считает разницу между смежными элементами диапазона |
adjacent_find | находит два идентичных (или имеющих другое отношение) элемента, смежных друг с другом |
count | возвращает количество элементов, соответствующее данному значению |
count_if | возвращает количество элементов, для которых предикат является истиной |
equal | определяет, одинаковы ли два множества элементов |
find | находит значение в данном диапазоне |
find_end | находит последнюю последовательность элеметов в определенном диапазоне |
find_first_of | ищет первое вхождение элемента во множестве элементов |
find_if | ищет первое вхождение элемента, для которого верен определенный предикат |
for_each | применяет функцию к диапазону элементов |
inner_product | считает внутренний продукт двух диапазонов элементов |
mismatch | находит первую позицию, в которой два диапазона различны |
partial_sum | считает частичную сумму диапазона элементов |
search | производит поиск в диапазоне элементов |
search_n | ищет N последовательных копий элемента в диапазоне |
Модифицирующие операции | |
copy | копирует некоторый диапазон элементов в новое место |
copy_backward | копирует диапазон элементов в обратном порядке |
fill | присваивает диапазону элементов определенное значение |
fill_n | присваивает значение некоторому количеству элементов |
generate | сохраняет результат функции в диапазоне |
generate_n | сохраняет результат N применений функции |
iter_swap | меняет местами элементы, обозначенные двумя итераторами |
partition | делит диапазон элементов на две группы |
random_shuffle | случайное перемешивание элементов диапазона |
remove | удаляет элемент, равный определенному значению |
remove_copy | копирует диапазон элементов, за исключением элементов, равных определенному значению |
remove_copy_if | создает копию диапазона, за исключением элементов, для которых предикат является истинным |
remove_if | удаляет все элементы, для которых предикат является истинным |
replace | заменяет каждое вхождение некоторого значения в диапазоне другим значением |
replace_copy | копирует диапазон, заменяя определенные значения новыми |
replace_copy_if | копирует диапазон значений, заменяя те, для которых предикат является истинным |
replace_if | заменяет значения тех элементов, для которых предикат является истинным |
reverse | изменяет порядок следования элементов некоторого множества на обратный |
reverse_copy | создает копию некоторого диапазона, изменяя порядок следования элементов на обратный |
rotate | двигает элементы множества влево на некоторое количество позиций |
rotate_copy | копирует и диапазон, сдвигая все его элементы на некоторое количество позиций |
stable_partition | делит элементы на две группы, сохраняя их относительный порядок |
swap | меняет местами значения двух объектов |
swap_ranges | меняет местами два диапазона элементов |
transform | применяет функцию к диапазону элементов |
unique | удаляет дубликаты элементов в диапазоне |
unique_copy | создает копию диапазона, которая не содержит дубликатов элементов |
Сортировка | |
nth_element | вставляет элемент диапазон, сохраняя упорядоченность, и проверяет, что нет элементов, для которых элемент слева больше чем лемент справа |
partial_sort | сортирует первые N элементов диапазона |
partial_sort_copy | копирует и частично сортирует диапазон элементов |
sort | сортирует диапазон по возрастанию |
stable_sort | сортирует диапазон элементов, сохраняя относительное положение между равными элементами |
Бинарный поиск (операции для отсортированных диапазонов) | |
binary_search | определяет, присутствует ли элемент в некотором диапазоне |
equal_range | ищет диапазон элементов, равных определенному элементу |
lower_bound | ищет первое место в диапазоне, в которое можно вставить значение, сохраняя упорядоченность |
upper_bound | ищет последнее место, куда можно вставить значения, сохраняя упорядоченность (первое место, в котором элемент больше чем вставляемое значение) |
Слияние (операции для отсортированных диапазонов) | |
includes | возвращает истину, если одно общество является подмножеством другого |
inplace_merge | производит слияние двух упарядоченных диапазонов, сохраняя результат в них |
merge | производит слияние двух упорядоченных диапазонов |
set_difference | считает разницу между двумя множествами |
set_intersection | считает пересечение двух множеств |
set_symmetric_difference | считает симметричную разность между двумя множествами |
set_union | вычисляет объединение двух множеств |
Куча (Heap) | |
is_heap | возвращает истину, если данный диапазон является кучей |
make_heap | создает кучу из диапазона элементов |
pop_heap | удаляет наибольший элемент из кучи |
push_heap | добавляет элемент в кучу |
sort_heap | превращает кучу в упорядоченный диапазон |
Min/Max | |
max | возвращает больший из двух элементов |
max_element | возвращает наибольший элемент в диапазоне |
min | возвращает меньший из двух элементов |
min_element | возвращает наименьший элемент в диапазоне |
lexicographical_compare | возвращает истину, если один диапазон лексикографически меньше, чем другой |
next_permutation | получает следующую в лексикографическом порядке перестановку элементов диапазона |
prev_permutation | получает следующую в лексикографическом порядке перестановку элементов диапазона |