Пространства имён
Варианты
Действия

Библиотека алгоритмов

Материал из cppreference.com
< cpp
 
 
Библиотека алгоритмов
Ограниченные алгоритмы и алгоритмы над диапазонами (C++20)
Ограниченные алгоритмы, например std::ranges::copy, std::ranges::sort, ...
Политики исполнения (C++17)
Немодифицирующие операции над последовательностями
(C++11)(C++11)(C++11)
(C++17)
Модифицирующие операции над последовательностями
Операции разбиения
Операции сортировки
(C++11)
Операции двоичного поиска
Операции с наборами (в отсортированных диапазонах)
Операции с кучей
(C++11)
Операций минимума/максимума
(C++11)
(C++17)

Операции перестановки
Числовые операции
Операции с неинициализированной памятью
(C++17)
(C++17)
(C++17)
Библиотека C
 
Ограниченные алгоритмы
Немодифицирующие операции над последовательностями
Модифицирующие операции над последовательностями
Операции разбиения
Операции сортировки
Операции двоичного поиска
Операции с наборами (в отсортированных диапазонах)
Операции с кучей
Операции минимума/максимума
Перестановки
Операции с неинициализированной памятью
Возвращаемые типы
 

Библиотека алгоритмов определяет функции для различных целей (например, поиск, сортировка, подсчёт, манипулирование), которые работают с диапазонами элементов. Обратите внимание, что диапазон определяется как [первый, последний), где последний ссылается на элемент, который находится после последнего элемента, который нужно проверить или изменить.

Содержание

Ограниченные алгоритмы

C++20 предоставляет ограниченные версии большинства алгоритмов в пространстве имён std::ranges. В этих алгоритмах диапазон может быть указан как пара итератор-ограничитель или как один аргумент range, и поддерживаются проекции и вызовы с указателем на элемент. Кроме того, типы возвращаемых данных большинства алгоритмов были изменены, чтобы возвращать всю потенциально полезную информацию, вычисленную во время выполнения алгоритма.

std::vector<int> v = {7, 1, 4, 0, -1};
std::ranges::sort(v); // ограниченный алгоритм
(начиная с C++20)


Политики исполнения

Большинство алгоритмов имеют перегрузки, которые принимают политики выполнения. Алгоритмы стандартной библиотеки поддерживают несколько политик выполнения, а библиотека предоставляет соответствующие типы и объекты политик выполнения. Пользователи могут выбирать политику выполнения статически, вызывая параллельный алгоритм с объектом политики выполнения соответствующего типа.

Реализации стандартной библиотеки (но не пользователи) могут определять дополнительные политики выполнения как расширение. Семантика параллельных алгоритмов, вызываемых с помощью объекта политики выполнения типа, определяемого реализацией, определяется реализацией.

В параллельных версиях алгоритмов (кроме std::for_each и std::for_each_n) разрешено создавать произвольные копии элементов из диапазонов, если оба std::is_trivially_copy_constructible_v<T> и std::is_trivially_destructible_v<T> равны true, где T это тип элементов.

Определены в заголовочном файле <execution>
Определены в пространстве имён std::execution
типы политик исполнения
(класс) [править]
(C++17)
(C++17)
(C++17)
(C++20)
глобальные объекты политики выполнения
(константа) [править]
Определены в пространстве имён std
проверяет, представляет ли класс политику выполнения
(шаблон класса) [править]
(начиная с C++17)
Немодифицирующие операции над последовательностями
Определены в заголовочном файле <algorithm>
(C++11)
(C++11)
(C++11)
проверяет, равен ли предикат true для всех, любого или ни одного из элементов в диапазоне
(шаблон функции) [править]
проверяет, равен ли предикат true для всех, любого или ни одного из элементов в диапазоне
(ниблоид) [править]
применяет функцию к диапазону элементов
(шаблон функции) [править]
применяет функцию к диапазону элементов
(ниблоид) [править]
применяет объект функцию к первым n элементам последовательности
(шаблон функции) [править]
применяет объект функцию к первым n элементам последовательности
(ниблоид) [править]
возвращает количество элементов, соответствующих определённым критериям
(шаблон функции) [править]
возвращает количество элементов, соответствующих определённым критериям
(ниблоид) [править]
находит первую позицию, в которой два диапазона различаются
(шаблон функции) [править]
находит первую позицию, в которой два диапазона различаются
(ниблоид) [править]
находит первый элемент, соответствущий определённым критериям
(шаблон функции) [править]
находит первый элемент, соответствующий определённым критериям
(ниблоид) [править]
находит последнюю последовательность элементов в определённом диапазоне
(шаблон функции) [править]
находит последнюю последовательность элементов в определённом диапазоне
(ниблоид) [править]
ищет любой элемент из набора элементов
(шаблон функции) [править]
ищет любой элемент из набора элементов
(ниблоид) [править]
находит первые два соседних элемента, которые равны (или удовлетворяют заданному предикату)
(шаблон функции) [править]
находит первые два соседних элемента, которые равны (или удовлетворяют заданному предикату)
(ниблоид) [править]
ищет диапазон элементов
(шаблон функции) [править]
ищет диапазон элементов
(ниблоид) [править]
ищет несколько последовательных копий элемента в диапазоне
(шаблон функции) [править]
ищет несколько последовательных копий элемента в диапазоне
(ниблоид) [править]
проверяет, начинается ли диапазон с другого диапазона
(ниблоид) [править]
проверяет, заканчивается ли диапазон другим диапазоном
(ниблоид) [править]
Модифицирующие операции над последовательностями
Определены в заголовочном файле <algorithm>
копирует диапазон элементов в новое место
(шаблон функции) [править]
копирует диапазон элементов в новое место
(ниблоид) [править]
(C++11)
копирует ряд элементов в новое место
(шаблон функции) [править]
копирует ряд элементов в новое место
(ниблоид) [править]
копирует диапазон элементов в обратном порядке
(шаблон функции) [править]
копирует диапазон элементов в обратном порядке
(ниблоид) [править]
(C++11)
перемещает диапазон элементов в новое место
(шаблон функции) [править]
перемещает дипазон элементов в новое место
(ниблоид) [править]
перемещает диапазон элементов в новое место в обратном порядке
(шаблон функции) [править]
перемещает диапазон элементов в новое место в обратном порядке
(ниблоид) [править]
присваивает диапазону элементов определённое значение
(шаблон функции) [править]
присваивает диапазону элементов определённое значение
(ниблоид) [править]
присваивает значение определённому количеству элементов
(шаблон функции) [править]
присваивает значение определённому количеству элементов
(ниблоид) [править]
применяет функцию к диапазону элементов, сохраняя результаты в целевом диапазоне
(шаблон функции) [править]
применяет функцию к диапазону элементов, сохраняя результаты в целевом диапазоне
(ниблоид) [править]
присваивает результаты последовательных вызовов функции каждому элементу в диапазоне
(шаблон функции) [править]
присваивает результаты последовательных вызовов функции каждому элементу в диапазоне
(ниблоид) [править]
присваивает результаты последовательных вызовов функции N элементам в диапазоне
(шаблон функции) [править]
сохраняет результат N применений функции
(ниблоид) [править]
удаляет элементы, соответствующие определённым критериям
(шаблон функции) [править]
удаляет элементы, соответствующие определённым критериям
(ниблоид) [править]
копирует диапазон элементов, исключая те, которые соответствуют определённым критериям
(шаблон функции) [править]
копирует диапазон элементов, исключая те, которые соответствуют определённым критериям
(ниблоид) [править]
заменяет другим значением все значения, соответствующие определённым критериям
(шаблон функции) [править]
заменяет другим значением все значения, соответствующие определённым критериям
(ниблоид) [править]
копирует диапазон, заменяя элементы, соответствующие определённым критериям, другим значением
(шаблон функции) [править]
копирует диапазон, заменяя элементы, соответствующие определённым критериям, другим значением
(ниблоид) [править]
меняет местами значения двух объектов
(шаблон функции) [править]
меняет местами два диапазона элементов
(шаблон функции) [править]
меняет местами два диапазона элементов
(ниблоид) [править]
меняет местами элементы, на которые указывают два итератора
(шаблон функции) [править]
меняет порядок элементов в диапазоне на обратный
(шаблон функции) [править]
меняет порядок элементов в диапазоне на обратный
(ниблоид) [править]
создаёт перевёрнутую копию диапазона
(шаблон функции) [править]
создаёт перевёрнутую копию диапазона
(ниблоид) [править]
вращает порядок элементов в диапазоне
(шаблон функции) [править]
вращает порядок элементов в диапазоне
(ниблоид) [править]
копирует и вращает диапазон элементов
(шаблон функции) [править]
копирует и вращает диапазон элементов
(ниблоид) [править]
сдвигает элементы в диапазоне
(шаблон функции) [править]
(до C++17)
(C++11)
случайным образом переупорядочивает элементы в диапазоне
(шаблон функции) [править]
случайным образом переупорядочивает элементы в диапазоне
(ниблоид) [править]
(C++17)
выбирает n случайных элементов из последовательности
(шаблон функции) [править]
выбирает n случайных элементов из последовательности
(ниблоид) [править]
удаляет последовательные повторяющиеся элементы в диапазоне
(шаблон функции) [править]
удаляет последовательные повторяющиеся элементы в диапазоне
(ниблоид) [править]
создает копию некоторого диапазона элементов, не содержащую последовательных дубликатов
(шаблон функции) [править]
создаёт копию некоторого диапазона элементов, не содержащую последовательных дубликатов
(ниблоид) [править]
Операции разбиения
Определены в заголовочном файле <algorithm>
определяет, разделён ли диапазон заданным предикатом
(шаблон функции) [править]
определяет, разделён ли диапазон заданным предикатом
(ниблоид) [править]
делит диапазон элементов на две группы
(шаблон функции) [править]
делит диапазон элементов на две группы
(ниблоид) [править]
копирует диапазон, разделяя элементы на две группы
(шаблон функции) [править]
копирует диапазон, разделяя элементы на две группы
(ниблоид) [править]
делит элементы на две группы с сохранением их относительного порядка
(шаблон функции) [править]
делит элементы на две группы с сохранением их относительного порядка
(ниблоид) [править]
находит точку раздела разделённого на две группы диапазона
(шаблон функции) [править]
находит точку раздела разделённого на две группы диапазона
(ниблоид) [править]
Операции сортировки
Определены в заголовочном файле <algorithm>
(C++11)
проверяет, отсортирован ли диапазон по возрастанию
(шаблон функции) [править]
проверяет, отсортирован ли диапазон по возрастанию
(ниблоид) [править]
находит наибольший отсортированный поддиапазон
(шаблон функции) [править]
находит наибольший отсортированный поддиапазон
(ниблоид) [править]
сортирует диапазон в порядке возрастания
(шаблон функции) [править]
сортирует диапазон в порядке возрастания
(ниблоид) [править]
сортирует первые N элементов диапазона
(шаблон функции) [править]
сортирует первые N элементов диапазона
(ниблоид) [править]
копирует и частично сортирует диапазон элементов
(шаблон функции) [править]
копирует диапазон, разделяя элементы на две группы
(ниблоид) [править]
сортирует диапазон элементов, сохраняя порядок между равными элементами
(шаблон функции) [править]
сортирует диапазон элементов, сохраняя порядок между равными элементами
(ниблоид) [править]
частично сортирует заданный диапазон, убедившись, что он разделён заданным элементом
(шаблон функции) [править]
частично сортирует заданный диапазон, убедившись, что он разделён заданным элементом
(ниблоид) [править]
Операции двоичного поиска (по отсортированным диапазонам)
Определены в заголовочном файле <algorithm>
возвращает итератор на первый элемент не меньший, чем заданное значение
(шаблон функции) [править]
возвращает итератор на первый элемент не меньший, чем заданное значение
(ниблоид) [править]
возвращает итератор на первый элемент, который больше определённого значения
(шаблон функции) [править]
возвращает итератор на первый элемент, который больше определённого значения
(ниблоид) [править]
определяет, находится ли элемент в некотором диапазоне
(шаблон функции) [править]
определяет, существует ли элемент в определённом диапазоне
(ниблоид) [править]
возвращает диапазон элементов, соответствующих определённому ключу
(шаблон функции) [править]
возвращает диапазон элементов, соответствующих определённому ключу
(ниблоид) [править]
Другие операции с отсортированными диапазонами
Определены в заголовочном файле <algorithm>
объединяет два отсортированных диапазона
(шаблон функции) [править]
объединяет два отсортированных диапазона
(ниблоид) [править]
объединяет два упорядоченных диапазона на месте
(шаблон функции) [править]
объединяет два упорядоченных диапазона на месте
(ниблоид) [править]
Операции с наборами (в отсортированных диапазонах)
Определены в заголовочном файле <algorithm>
возвращает истину, если одна последовательность является подпоследовательностью другой
(шаблон функции) [править]
возвращает истину, если одна последовательность является подпоследовательностью другой
(ниблоид) [править]
вычисляет разницу между двумя наборами
(шаблон функции) [править]
вычисляет разницу между двумя наборами
(ниблоид) [править]
вычисляет пересечение двух множеств
(шаблон функции) [править]
вычисляет пересечение двух множеств
(ниблоид) [править]
вычисляет симметричную разницу между двумя наборами
(шаблон функции) [править]
вычисляет симметричную разницу между двумя наборами
(ниблоид) [править]
вычисляет объединение двух множеств
(шаблон функции) [править]
вычисляет объединение двух множеств
(ниблоид) [править]
Операции с кучей
Определены в заголовочном файле <algorithm>
проверяет, является ли указанный диапазон максимальной кучей
(шаблон функции) [править]
проверяет, является ли указанный диапазон максимальной кучей
(ниблоид) [править]
находит самый большой поддиапазон, который составляет максимальную кучу
(шаблон функции) [править]
находит самый большой поддиапазон, который составляет максимальную кучу
(ниблоид) [править]
создаёт максимальную кучу из диапазона элементов
(шаблон функции) [править]
создаёт максимальную кучу из диапазона элементов
(ниблоид) [править]
добавляет элемент в максимальную кучу
(шаблон функции) [править]
добавляет элемент в максимальную кучу
(ниблоид) [править]
удаляет наибольший элемент из максимальной кучи
(шаблон функции) [править]
удаляет наибольший элемент из максимальной кучи
(ниблоид) [править]
превращает максимальную кучу в диапазон элементов, отсортированных в порядке возрастания
(шаблон функции) [править]
превращает максимальную кучу в диапазон элементов, отсортированных в порядке возрастания
(ниблоид) [править]
Операции минимума/максимума
Определены в заголовочном файле <algorithm>
возвращает большее из заданных значений
(шаблон функции) [править]
возвращает большее из заданных значений
(ниблоид) [править]
возвращает наибольший элемент в диапазоне
(шаблон функции) [править]
возвращает наибольший элемент в диапазоне
(ниблоид) [править]
возвращает меньшее из заданных значений
(шаблон функции) [править]
возвращает меньшее из заданных значений
(ниблоид) [править]
возвращает наименьший элемент в диапазоне
(шаблон функции) [править]
возвращает наименьший элемент в диапазоне
(ниблоид) [править]
(C++11)
возвращает меньший и больший из двух элементов
(шаблон функции) [править]
возвращает меньший и больший из двух элементов
(ниблоид) [править]
возвращает наименьший и наибольший элементы в диапазоне
(шаблон функции) [править]
возвращает наименьший и наибольший элементы в диапазоне
(ниблоид) [править]
(C++17)
приводит значение к диапазону между парой граничных значений
(шаблон функции) [править]
фиксирует значение между парой граничных значений
(ниблоид) [править]
Операции сравнения
Определены в заголовочном файле <algorithm>
определяет, одинаковы ли два множества элементов
(шаблон функции) [править]
определяет, одинаковы ли два множества элементов
(ниблоид) [править]
возвращает истину, если один диапазон лексикографически меньше другого
(шаблон функции) [править]
возвращает истину, если один диапазон лексикографически меньше другого
(ниблоид) [править]
сравнивает два диапазона, используя трёхстороннее сравнение
(шаблон функции) [править]
Операции перестановки
Определены в заголовочном файле <algorithm>
определяет, является ли последовательность перестановкой другой последовательности
(шаблон функции) [править]
определяет, является ли последовательность перестановкой другой последовательности
(ниблоид) [править]
генерирует следующую большую лексикографическую перестановку диапазона элементов
(шаблон функции) [править]
генерирует следующую большую лексикографическую перестановку диапазона элементов
(ниблоид) [править]
генерирует следующую меньшую лексикографическую перестановку диапазона элементов
(шаблон функции) [править]
генерирует следующую меньшую лексикографическую перестановку диапазона элементов
(ниблоид) [править]
Числовые операции
Определены в заголовочном файле <numeric>
(C++11)
заполняет диапазон последовательными приращениями начального значения
(шаблон функции) [править]
суммирует диапазон элементов
(шаблон функции) [править]
вычисляет скалярное произведение двух диапазонов элементов
(шаблон функции) [править]
вычисляет различия между соседними элементами в диапазоне
(шаблон функции) [править]
вычисляет частичную сумму диапазона элементов
(шаблон функции) [править]
(C++17)
подобна std::accumulate, за исключением порядка
(шаблон функции) [править]
подобно std::partial_sum, исключает i-й входной элемент из i-й суммы
(шаблон функции) [править]
подобно std::partial_sum, включает i-й входной элемент в i-ю сумму
(шаблон функции) [править]
применяет invocable, reduces не по порядку
(шаблон функции) [править]
применяет вызываемый объект, затем вычисляет exclusive scan
(шаблон функции) [править]
применяет вызываемый объект, затем вычисляет inclusive scan
(шаблон функции) [править]
Операции с неинициализированной памятью
Определены в заголовочном файле <memory>
копирует диапазон объектов в неинициализированную область памяти
(шаблон функции) [править]
копирует диапазон объектов в неинициализированную область памяти
(ниблоид) [править]
копирует ряд объектов в неинициализированную область памяти
(шаблон функции) [править]
копирует ряд объектов в неинициализированную область памяти
(ниблоид) [править]
копирует объект в неинициализированную область памяти, определяемую диапазоном
(шаблон функции) [править]
копирует объект в неинициализированную область памяти, определяемую диапазоном
(ниблоид) [править]
копирует объект в неинициализированную область памяти, определяемую началом и количеством
(шаблон функции) [править]
копирует объект в неинициализированную область памяти, определяемую началом и количеством
(ниблоид) [править]
перемещает диапазон объектов в неинициализированную область памяти
(шаблон функции) [править]
перемещает диапазон объектов в неинициализированную область памяти
(ниблоид) [править]
перемещает ряд объектов в неинициализированную область памяти
(шаблон функции) [править]
перемещает ряд объектов в неинициализированную область памяти
(ниблоид) [править]
создаёт объекты инициализацией по умолчанию в неинициализированной области памяти, определяемой диапазоном
(шаблон функции) [править]
создаёт объекты инициализацией по умолчанию в неинициализированной области памяти, определяемой диапазоном
(ниблоид) [править]
создаёт объекты инициализацией по умолчанию в неинициализированной области памяти, определяемой началом и количеством
(шаблон функции) [править]
создаёт объекты инициализацией по умолчанию в неинициализированной области памяти, определяемой началом и количеством
(ниблоид) [править]
создаёт объекты инициализацией значением в неинициализированной области памяти, определяемой диапазоном
(шаблон функции) [править]
создаёт объекты инициализацией значением в неинициализированной области памяти, определяемой диапазоном
(ниблоид) [править]
создаёт объекты инициализацией значением в неинициализированной области памяти, определяемой началом и количеством
(шаблон функции) [править]
создаёт объекты инициализированные значением в неинициализированной области памяти, определяемой началом и количеством
(ниблоид) [править]
(C++17)
уничтожает диапазон объектов
(шаблон функции) [править]
уничтожает диапазон объектов
(ниблоид) [править]
(C++17)
уничтожает несколько объектов в диапазоне
(шаблон функции) [править]
уничтожает несколько объектов в диапазоне
(ниблоид) [править]
уничтожает объект по заданному адресу
(шаблон функции) [править]
уничтожает объект по заданному адресу
(ниблоид) [править]
создаёт объект по заданному адресу
(шаблон функции) [править]
создаёт объект по заданному адресу
(ниблоид) [править]
Библиотека C
Определены в заголовочном файле <cstdlib>
сортирует диапазон элементов с неопределённым типом
(функция) [править]
ищет в массиве элемент любого типа
(функция) [править]


[править] Смотрите также

Документация по C для Алгоритмы