<algorithm>
Определяет выполняющие алгоритмы функции шаблонов контейнера из стандартной библиотеки шаблонов (STL).
(see relevant links below for specific algorithm syntax)
Заметки
Алгоритмы STL универсальны, поскольку они могут работать с различными структурами данных. Структуры данных, с которыми они могут работать, включают в себя не только классы контейнеров STL, такие как vector и list, но также определенные программой структуры данных и массивы элементов, удовлетворяющие требованиям определенного алгоритма. Алгоритмы STL достигают такого уровня универсальности путем получения доступа к элементам контейнера и их просмотра опосредованным образом через итераторы.
Алгоритмы STL обрабатывают диапазоны итератора, которые обычно определяются их начальными или конечными позициями. Указанные диапазоны должны быть допустимы в том смысле, что все указатели в диапазонах должны поддерживать удаление ссылок и в рамках последовательностей каждого диапазона последняя позиция должна быть доступна из первой путем приращения.
Алгоритмы STL расширяют действия, поддерживаемые операциями и функциями-членами каждого контейнера STL, и позволяют работать, например, с различными типами объектов контейнера одновременно. Два суффикса использовалось, чтобы передавать сведения о назначении алгоритмов.
Суффикс _if указывает, что алгоритм работает с объектами функций, действующих для значений элементов, а не с самими значениями элементов. Алгоритм find_if выполняет поиск элементов, значения которых удовлетворяют критерию, заданному объектом функции, а алгоритм find ищет определенное значение.
Суффикс _copy означает, что этот алгоритм не только манипулирует значениями элементов, но также копирует измененные значения в диапазон назначения. Алгоритм reverse изменяет порядок элементов в диапазоне на обратный, а алгоритм reverse_copy также копирует результат в диапазон назначения.
Алгоритмы STL часто делятся на группы, указывающие какие-либо сведения об их целях или требованиях. Они включают как изменяющие алгоритмы (то есть алгоритмы, изменяющие значения элементов), так и неизменяющие. Изменяющие алгоритмы меняют порядок элементов, но не значения элементов. Удаляющие алгоритмы могут исключать элементы из диапазона или копии диапазона. Сортирующие алгоритмы меняют порядок элементов в диапазонах различными способами, а алгоритмы сортированных диапазонов воздействуют только на диапазоны, элементы которых были отсортированы каким-либо образом.
Числовые алгоритмы STL, которые предоставляются для числовой обработки, обладают своим файлом заголовка <numeric>, а объекты функций и переходники определяются в заголовке <functional>. Объекты функций, возвращающие логические значения, называются предикатами. Заданным по умолчанию бинарным предикатом является сравнение operator<. В целом, упорядочиваемые элементы должны подлежать сравнению "меньше чем", чтобы, имея два элемента, можно было определить, что они равны (ни один не меньше другого) или что один меньше другого. Это приводит к упорядочиванию неравнозначных элементов.
Функции
Поиск двух соседних элементов, которые либо равны, либо удовлетворяют указанному условию. |
|
Возвращает значение true, если условие выполняется каждым элементом заданного диапазона. |
|
Возвращает значение true, если условие выполняется хотя бы один раз в указанном диапазоне элементов. |
|
Проверяет, есть ли в отсортированном диапазоне элемент, равный указанному значению или эквивалентный ему в смысле, заданном двоичным предикатом. |
|
Присваивает значения элементов из исходного диапазона диапазону назначения, выполняя итерации в исходной последовательности элементов и присваивая им новые позиции в прямом направлении. |
|
Присваивает значения элементов из исходного диапазона диапазону назначения, выполняя итерации в исходной последовательности элементов и присваивая им новые позиции в обратном направлении. |
|
Копирует все элементы в заданном диапазоне, возвращающие true для заданного условия |
|
Копирует указанное количество элементов. |
|
Возвращает количество элементов в диапазоне, значения которых соответствуют заданному значению. |
|
Возвращает количество элементов в диапазоне, значения которых соответствуют заданному условию. |
|
Сравнивает два диапазона поэлементно либо на признак равенства или равноценности в смысле, заданном бинарным предикатом. |
|
Находит пару позиций в упорядоченном диапазоне; первая из них меньше или равна позиции указанного элемента, а вторая — больше позиции элемента, где суть равноценности или порядка, используемая, чтобы установить позиции в последовательности, может быть задана бинарным предикатом. |
|
Присваивает одно и то же новое значение каждому элементу в заданном диапазоне. |
|
Присваивает новое значение указанному количеству элементов в диапазоне, начиная с определенного элемента. |
|
Находит позицию первого вхождения элемента с заданным значением в диапазон. |
|
Ищет в диапазоне последнюю подпоследовательность, совпадающую с заданной последовательностью, или равноценную в смысле, определенном бинарным предикатом. |
|
Выполняет поиск первого вхождения любого из нескольких значений в заданный диапазон или первого вхождения любого из нескольких элементов, равноценных в смысле, заданном бинарным предикатом, в указанный набор элементов. |
|
Находит позицию первого вхождения элемента, удовлетворяющего определенному условию, в диапазон. |
|
Возвращает первый элемент, который не удовлетворяет условию, в указанном диапазоне. |
|
Применяет заданный объект функции к каждому элементу в прямом порядке в пределах диапазона и возвращает объект функции. |
|
Присваивает значения, создаваемые объектом функции, каждому элементу в диапазоне. |
|
Присваивает значения, создаваемые объектом функции, указанному количеству элементов в диапазон и возвращается на позицию, следующую за последним присвоенным значением. |
|
Проверяет, содержит ли один отсортированный диапазон все элементы, содержащиеся во втором отсортированном диапазоне, где порядок сортировки или критерий эквивалентности элементов можно задать бинарным предикатом. |
|
Объединяет элементы из двух последовательных упорядоченных диапазонов в один упорядоченный диапазон, где критерий порядка сортировки может быть указан бинарным предикатом. |
|
Возвращает значение true, если элементы в указанном диапазоне образуют кучу. |
|
Возвращает значение true, если указанный диапазон образует кучу до последнего элемента. |
|
Возвращает значение true, если все элементы в заданном диапазоне, возвращающие true для какого-либо условия, расположены перед всеми элементами, возвращающими false. |
|
Определяет, образуют ли элементы в заданном диапазоне допустимую перестановку. |
|
Возвращает значение true, если элементы в указанном диапазоне расположены в порядке сортировки. |
|
Возвращает значение true, если элементы в указанном диапазоне расположены в порядке сортировки. |
|
Меняет местами два значения, указанные парой определенных итераторов. |
|
Сравнивает две последовательности поэлементно для определения того, какой элемент из двух меньше. |
|
Находит позицию первого элемента в упорядоченном диапазоне, значение которого больше или равно указанному значению, где критерий упорядочивания может быть задан бинарным предикатом. |
|
Преобразует элементы из указанного диапазона в кучу, в которой первый элемент является наибольшим и для которой критерий сортировки может быть определен бинарным предикатом. |
|
Сравнивает два объекта и возвращает больший из них, где критерий упорядочивания может быть указан бинарным предикатом. |
|
Находит первое вхождение наибольшего элемента в указанном диапазоне, где критерий упорядочивания может быть указан бинарным предикатом. |
|
Объединяет все элементы из двух исходных упорядоченных диапазонов в один упорядоченный диапазон назначения, где критерий порядка сортировки может быть указан бинарным предикатом. |
|
Сравнивает два объекта и возвращает меньший из них, где критерий упорядочивания может быть указан бинарным предикатом. |
|
Находит первое вхождение наименьшего элемента в указанном диапазоне, где критерий упорядочивания может быть указан бинарным предикатом. |
|
Сравнивает два входных параметра и возвращает их в виде пары, в порядке от меньшего к большему. |
|
Выполняет работу, которую делают min_element и max_element, в одном вызове. |
|
Сравнивает два диапазона поэлементно либо на равенство или равноценность в смысле, заданном бинарным предикатом, и находит первую позицию, где наблюдается разница. |
|
Перемещает элементы, связанные с заданным диапазоном. |
|
Перемещает элементы одного итератора в другой. Перемещение начинается с последнего элементом в указанном диапазоне и завершается первым элементом в этом диапазоне. |
|
Изменяет порядок элементов в диапазоне, чтобы исходный порядок был заменен перестановкой "лексикографически следующий больший", если такая существует, где смысл термина "следующий" может быть задан бинарным предикатом. |
|
Возвращает значение true, если условие не выполняется ни одним элементом заданного диапазона. |
|
Разделяет диапазон элементов, правильно находя n-ый элемент последовательности в диапазоне, чтобы все элементы перед ним были меньше или равны ему, а все элементы в последовательности после него больше либо равны ему. |
|
Упорядочивает указанное число меньших элементов в диапазоне в не нисходящий порядок или согласно критерию упорядочивания, заданному бинарным предикатом. |
|
Копирует элементы из исходного диапазона в диапазон назначения, где исходные элементы упорядочены по критерию "меньше либо равно" или согласно другому заданному бинарному предикату. |
|
Разделяет элементы диапазона на два непересекающихся множества, при этом элементы, удовлетворяющие унарному предикату, расположены перед теми, которые ему не удовлетворяют. |
|
Копирует элементы, возвращающие true для какого-либо условия, в одно место назначения, а возвращающие false — в другое. Эти элементы должны поступать из указанного диапазона. |
|
Возвращает первый элемент, который не удовлетворяет условию, в данном диапазоне. Элементы сортируются так, чтобы те, которые соответствуют условию, располагались перед теми, что не соответствуют. |
|
Удаляет наибольший элемент из начала кучи до позиции, следующей за последней, в диапазоне, а затем формирует новую кучу из оставшихся элементов. |
|
Изменяет порядок элементов в диапазоне, чтобы исходный порядок был заменен перестановкой "лексикографически следующий больший", если такая существует, где смысл термина "следующий" может быть задан бинарным предикатом. |
|
Добавляет элемент, находящийся в конце диапазона, в существующую кучу, состоящую из предыдущих элементов диапазона. |
|
Выполняет переупорядочивание последовательности N элементов в диапазоне в одном из N! возможных порядков, выбранном случайным образом. |
|
Удаляет указанное значение из заданного диапазона без нарушения порядка остальных элементов и возвращает конец нового диапазона после удаления указанного значения. |
|
Копирует элементы из исходного диапазона в диапазон назначения за исключением того, что элементы с заданным значением не копируются, не нарушая порядок остальных элементов и возвращая конец нового диапазона назначения. |
|
Копирует элементы из исходного диапазона в диапазон назначения за исключением того, что элементы, соответствующие предикату, не копируются, не нарушая порядок остальных элементов и возвращая конец нового диапазона назначения. |
|
Удаляет элементы, соответствующие предикату, из заданного диапазона без нарушения порядка остальных элементов и возвращает конец нового диапазона после удаления указанного значения. |
|
Проверяет каждый элемент в диапазоне и заменяет его, если он соответствует заданному значению. |
|
Проверяет каждый элемент в исходном диапазоне и заменяет его, если он соответствует заданному значению, одновременно копируя результат в новый диапазон назначения. |
|
Проверяет каждый элемент в исходном диапазоне и заменяет его, если он соответствует заданному предикату, одновременно копируя результат в новый диапазон назначения. |
|
Проверяет каждый элемент в диапазоне и заменяет его, если он соответствует заданному предикату. |
|
Изменяет порядок элементов в диапазоне на обратный. |
|
Изменяет порядок элементов в исходном диапазоне на обратный, одновременно копируя их в диапазон назначения |
|
Меняет местами элементы в двух соседних диапазонах. |
|
Меняет местами элементы в двух соседних диапазонах в пределах исходного диапазона и копирует результат в диапазон назначения. |
|
Выполняет поиск первого вхождения последовательности в целевой диапазон, элементы которого равны указанным в заданной последовательности элементов или элементы которого равноценны в смысле, заданным бинарным предикатом, элементам в заданной последовательности. |
|
Выполняет поиск первой подпоследовательности в диапазоне заданного числа элементов, имеющих определенное значение или связанных с этим значением отношением, указанным бинарным предикатом. |
|
Объединяет все элементы, принадлежащие одному отсортированному исходному диапазону, но не второму отсортированному исходному диапазону, в один отсортированный диапазон назначения, где критерий упорядочивания может быть указан бинарным предикатом. |
|
Объединяет все элементы, входящие в оба исходных упорядоченных диапазона, в один упорядоченный диапазон назначения, где критерий порядка сортировки может быть указан бинарным предикатом. |
|
Объединяет все элементы, входящие в один, но не в оба исходных упорядоченных диапазона, в один упорядоченный диапазон назначения, где критерий порядка сортировки может быть указан бинарным предикатом. |
|
Объединяет все элементы, входящие в хотя бы один из двух исходных упорядоченных диапазонов, в один упорядоченный диапазон назначения, где критерий порядка сортировки может быть указан бинарным предикатом. |
|
Упорядочивает элементы в указанном диапазоне в не нисходящем порядке или согласно критерию упорядочивания, заданному бинарным предикатом. |
|
Перемешивает (изменяет порядок) элементы в указанном диапазоне, используя генератор случайных чисел. |
|
Преобразует кучу в упорядоченный диапазон. |
|
Разделяет элементы диапазона на два непересекающихся множества, при этом элементы, удовлетворяющие унарному предикату, расположены перед теми, которые ему не удовлетворяют, с сохранением относительного порядка равноценных элементов. |
|
Упорядочивает элементы в указанном диапазоне в не нисходящем порядке или согласно критерию упорядочивания, заданному бинарным предикатом, и сохраняет относительный порядок равноценных элементов. |
|
Меняет местами значения элементов между двумя типами объектов, присваивая содержимое первого объекта второму объекту, а содержимое второго — первому. |
|
Меняет местами элементы одного диапазона с элементами другого диапазона такого же размера. |
|
Применяет заданный объект функции к каждому элементу в исходном диапазоне или к паре элементов из двух исходных диапазонов и копирует возвращаемые значения объекта функции в диапазон назначения. |
|
Удаляет повторяющиеся элементы, расположенные в указанном диапазоне рядом друг с другом. |
|
Копирует элементы из исходного диапазона в диапазон назначения за исключением повторяющихся элементов, расположенных рядом друг с другом. |
|
Находит позицию первого элемента в упорядоченном диапазоне, который имеет значение больше указанного значения, где критерий упорядочивания может быть задан бинарным предикатом. |
См. также
Ссылки
Потокобезопасность в стандартной библиотеке C++
Библиотека стандартных шаблонов