Алгоритмы 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 | получает следующую в лексикографическом порядке перестановку элементов диапазона |