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

Ограниченные алгоритмы (начиная с C++20)

Материал из cppreference.com
< cpp‎ | algorithm
 
 
Библиотека алгоритмов
Ограниченные алгоритмы и алгоритмы над диапазонами (C++20)
Ограниченные алгоритмы, например ranges::copy, 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
 
Ограниченные алгоритмы
no section name
no section name
no section name
no section name
no section name
no section name
no section name
no section name
no section name
Числовые операции
Операции свёртки
Операции с неинициализированной памятью
no section name
 

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

Содержание

[править] Ограниченные алгоритмы

Определены в заголовочном файле <algorithm>
Определены в пространстве имён std::ranges
Немодифицирующие операции с последовательностями
проверяет, равен ли предикат true для всех, любого или ни одного из элементов в диапазоне
(ниблоид) [править]
применяет функцию к диапазону элементов
(ниблоид) [править]
применяет объект функцию к первым n элементам последовательности
(ниблоид) [править]
возвращает количество элементов, соответствующих определённым критериям
(ниблоид) [править]
находит первую позицию, в которой два диапазона различаются
(ниблоид) [править]
определяет, одинаковы ли два множества элементов
(ниблоид) [править]
возвращает true, если один диапазон лексикографически меньше другого
(ниблоид) [править]
находит первый элемент, соответствующий определённым критериям
(ниблоид) [править]
находит последний элемент, соответствующий определённым критериям
(ниблоид) [править]
находит последнюю последовательность элементов в определённом диапазоне
(ниблоид) [править]
ищет любой элемент из набора элементов
(ниблоид) [править]
находит первые два соседних элемента, которые равны (или соответствуют заданному предикату)
(ниблоид) [править]
ищет диапазон элементов
(ниблоид) [править]
ищет несколько последовательных копий элемента в диапазоне
(ниблоид) [править]
проверяет, содержит ли диапазон заданный элемент или поддиапазон
(ниблоид) [править]
проверяет, начинается ли диапазон с другого диапазона
(ниблоид) [править]
проверяет, заканчивается ли диапазон другим диапазоном
(ниблоид) [править]
Модифицирующие операции с последовательностями
копирует диапазон элементов в новое место
(ниблоид) [править]
копирует ряд элементов в новое место
(ниблоид) [править]
копирует диапазон элементов в обратном порядке
(ниблоид) [править]
перемещает дипазон элементов в новое место
(ниблоид) [править]
перемещает диапазон элементов в новое место в обратном порядке
(ниблоид) [править]
присваивает диапазону элементов определённое значение
(ниблоид) [править]
присваивает значение определённому количеству элементов
(ниблоид) [править]
применяет функцию к диапазону элементов, сохраняя результаты в целевом диапазоне
(ниблоид) [править]
присваивает результаты последовательных вызовов функции каждому элементу в диапазоне
(ниблоид) [править]
сохраняет результат N применений функции
(ниблоид) [править]
удаляет элементы, соответствующие определённым критериям
(ниблоид) [править]
копирует диапазон элементов, исключая те, которые соответствуют определённым критериям
(ниблоид) [править]
заменяет другим значением все значения, соответствующие определённым критериям
(ниблоид) [править]
копирует диапазон, заменяя элементы, соответствующие определённым критериям, другим значением
(ниблоид) [править]
меняет местами два диапазона элементов
(ниблоид) [править]
меняет порядок элементов в диапазоне на обратный
(ниблоид) [править]
создаёт перевёрнутую копию диапазона
(ниблоид) [править]
вращает порядок элементов в диапазоне
(ниблоид) [править]
копирует и вращает диапазон элементов
(ниблоид) [править]
случайным образом переупорядочивает элементы в диапазоне
(ниблоид) [править]
сдвигает элементы в диапазоне
(ниблоид) [править]
выбирает n случайных элементов из последовательности
(ниблоид) [править]
удаляет последовательные повторяющиеся элементы в диапазоне
(ниблоид) [править]
создаёт копию некоторого диапазона элементов, не содержащую последовательных дубликатов
(ниблоид) [править]
Операции с разделами
определяет, разделён ли диапазон заданным предикатом
(ниблоид) [править]
делит диапазон элементов на две группы
(ниблоид) [править]
копирует диапазон, разделяя элементы на две группы
(ниблоид) [править]
делит элементы на две группы с сохранением их относительного порядка
(ниблоид) [править]
находит точку раздела разделённого на две группы диапазона
(ниблоид) [править]
Операции сортировки
проверяет, отсортирован ли диапазон по возрастанию
(ниблоид) [править]
находит наибольший отсортированный поддиапазон
(ниблоид) [править]
сортирует диапазон в порядке возрастания
(ниблоид) [править]
сортирует первые N элементов диапазона
(ниблоид) [править]
копирует диапазон, разделяя элементы на две группы
(ниблоид) [править]
сортирует диапазон элементов, сохраняя порядок между равными элементами
(ниблоид) [править]
частично сортирует заданный диапазон, убедившись, что он разделён заданным элементом
(ниблоид) [править]
Операции бинарного поиска (в отсортированных диапазонах)
возвращает итератор на первый элемент не меньший, чем заданное значение
(ниблоид) [править]
возвращает итератор на первый элемент, который больше определённого значения
(ниблоид) [править]
определяет, существует ли элемент в частично упорядоченном диапазоне
(ниблоид) [править]
возвращает диапазон элементов, соответствующих определённому ключу
(ниблоид) [править]
Операции над множествами (в отсортированных диапазонах)
объединяет два отсортированных диапазона
(ниблоид) [править]
объединяет два упорядоченных диапазона на месте
(ниблоид) [править]
возвращает true, если одна последовательность является подпоследовательностью другой
(ниблоид) [править]
вычисляет разницу между двумя наборами
(ниблоид) [править]
вычисляет пересечение двух множеств
(ниблоид) [править]
вычисляет симметричную разницу между двумя наборами
(ниблоид) [править]
вычисляет объединение двух множеств
(ниблоид) [править]
Операции с кучей
проверяет, является ли указанный диапазон максимальной кучей
(ниблоид) [править]
находит самый большой поддиапазон, который составляет максимальную кучу
(ниблоид) [править]
создаёт максимальную кучу из диапазона элементов
(ниблоид) [править]
добавляет элемент в максимальную кучу
(ниблоид) [править]
удаляет наибольший элемент из максимальной кучи
(ниблоид) [править]
превращает максимальную кучу в диапазон элементов, отсортированных в порядке возрастания
(ниблоид) [править]
Операции минимума/максимума
возвращает большее из заданных значений
(ниблоид) [править]
возвращает наибольший элемент в диапазоне
(ниблоид) [править]
возвращает меньшее из заданных значений
(ниблоид) [править]
возвращает наименьший элемент в диапазоне
(ниблоид) [править]
возвращает меньший и больший из двух элементов
(ниблоид) [править]
возвращает наименьший и наибольший элементы в диапазоне
(ниблоид) [править]
фиксирует значение между парой граничных значений
(ниблоид) [править]
Операции перестановки
определяет, является ли последовательность перестановкой другой последовательности
(ниблоид) [править]
генерирует следующую большую лексикографическую перестановку диапазона элементов
(ниблоид) [править]
генерирует следующую меньшую лексикографическую перестановку диапазона элементов
(ниблоид) [править]

[править] Ограниченные числовые операции

Определены в заголовочном файле <numeric>
Определены в пространстве имён std::ranges
заполняет диапазон последовательными приращениями начального значения
(ниблоид) [править]

[править] Алгоритмы с ограниченной неинициализированной памятью

Определены в заголовочном файле <memory>
Определены в пространстве имён std::ranges
копирует диапазон объектов в неинициализированную область памяти
(ниблоид) [править]
копирует ряд объектов в неинициализированную область памяти
(ниблоид) [править]
копирует объект в неинициализированную область памяти, определяемую диапазоном
(ниблоид) [править]
копирует объект в неинициализированную область памяти, определяемую началом и количеством
(ниблоид) [править]
перемещает диапазон объектов в неинициализированную область памяти
(ниблоид) [править]
перемещает ряд объектов в неинициализированную область памяти
(ниблоид) [править]
создаёт объекты инициализацией по умолчанию в неинициализированной области памяти, определяемой диапазоном
(ниблоид) [править]
создаёт объекты инициализацией по умолчанию в неинициализированной области памяти, определяемой началом и количеством
(ниблоид) [править]
создаёт объекты инициализацией значением в неинициализированной области памяти, определяемой диапазоном
(ниблоид) [править]
создаёт объекты инициализированные значением в неинициализированной области памяти, определяемой началом и количеством
(ниблоид) [править]
уничтожает диапазон объектов
(ниблоид) [править]
уничтожает несколько объектов в диапазоне
(ниблоид) [править]
уничтожает объект по заданному адресу
(ниблоид) [править]
создаёт объект по заданному адресу
(ниблоид) [править]

[править] Возвращаемые типы

Определены в заголовочном файле <algorithm>
Определены в пространстве имён std::ranges
предоставляет способ хранить итератор и объект функции как единое целое
(шаблон класса) [править]
предоставляет способ хранить два итератора как единое целое
(шаблон класса) [править]
предоставляет способ хранить два итератора как единое целое
(шаблон класса) [править]
предоставляет способ хранить три итератора как единое целое
(шаблон класса) [править]
предоставляет способ хранить три итератора как единое целое
(шаблон класса) [править]
предоставляет способ хранить два объекта или ссылки одного типа как единое целое
(шаблон класса) [править]
предоставляет способ хранить итератор и логический флаг как единое целое
(шаблон класса) [править]
предоставляет способ хранить итератор и значение как единое целое
(шаблон класса) [править]
предоставляет способ хранить итератор и значение как единое целое
(шаблон класса) [править]

[править] Примечание

Макрос тест функциональности Значение Стандарт Комментарий
__cpp_lib_ranges 201911L (C++20) Библиотека диапазонов и алгоритмы с ограничениями
__cpp_lib_ranges_contains 202207L (C++23) std::ranges::contains
__cpp_lib_find_last 202207L (C++23) std::ranges::find_last
__cpp_lib_ranges_fold 202207L (C++23) std::ranges fold algorithms
__cpp_lib_ranges_iota 202202L (C++23) std::ranges::iota
__cpp_lib_ranges_starts_ends_with 202106L (C++23) std::ranges::starts_with, std::ranges::ends_with
__cpp_lib_shift 201806L (C++20) std::shift_left и std::shift_right
202202L (C++23) std::ranges::shift_left и std::ranges::shift_right