Namespaces
Variants

Algorithms library

From cppreference.net
Algorithm library
Constrained algorithms and algorithms on ranges (C++20)
Constrained algorithms, e.g. ranges::copy , ranges::sort , ...
Execution policies (C++17)
Non-modifying sequence operations
Batch operations
(C++17)
Search operations
Modifying sequence operations
Copy operations
(C++11)
(C++11)
Swap operations
Transformation operations
Generation operations
Removing operations
Order-changing operations
(until C++17) (C++11)
(C++20) (C++20)
Sampling operations
(C++17)

Sorting and related operations
Partitioning operations
Sorting operations
Binary search operations
(on partitioned ranges)
Set operations (on sorted ranges)
Merge operations (on sorted ranges)
Heap operations
Minimum/maximum operations
Lexicographical comparison operations
Permutation operations
C library
Numeric operations
Operations on uninitialized memory

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

Содержание

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

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

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

Политики выполнения (начиная с C++17)

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

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

Параллельные версии алгоритмов (за исключением 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
проверяет, представляет ли класс политику выполнения
(шаблон класса)
Макрос тестирования возможностей Значение Стандарт Функция
__cpp_lib_parallel_algorithm 201603L (C++17) Параллельные алгоритмы
__cpp_lib_execution 201603L (C++17) Политики выполнения
201902L (C++20) std::execution::unsequenced_policy

Немодифицирующие операции над последовательностями

Пакетные операции

Определено в заголовочном файле <algorithm>
применяет унарный функциональный объект к элементам из диапазона
(шаблон функции)
применяет унарный функциональный объект к элементам из диапазона
(функциональный объект алгоритма)
(C++17)
применяет функциональный объект к первым N элементам последовательности
(шаблон функции)
применяет функциональный объект к первым N элементам последовательности
(функциональный объект алгоритма)

Операции поиска

Определено в заголовочном файле <algorithm>
(C++11) (C++11) (C++11)
проверяет, является ли предикат true для всех, любого или ни одного из элементов в диапазоне
(шаблон функции)
проверяет, является ли предикат true для всех, любого или ни одного из элементов в диапазоне
(функциональный объект алгоритма)
проверяет, содержит ли диапазон заданный элемент или поддиапазон
(объект-функция алгоритма)
находит первый элемент, удовлетворяющий определённым критериям
(шаблон функции)
находит первый элемент, удовлетворяющий определённым критериям
(функциональный объект алгоритма)
находит последний элемент, удовлетворяющий определённым критериям
(функциональный объект алгоритма)
находит последнюю последовательность элементов в заданном диапазоне
(шаблон функции)
находит последнюю последовательность элементов в заданном диапазоне
(функциональный объект алгоритма)
выполняет поиск любого из набора элементов
(шаблон функции)
выполняет поиск любого элемента из набора элементов
(функциональный объект алгоритма)
находит первые два соседних элемента, которые равны (или удовлетворяют заданному предикату)
(шаблон функции)
находит первые два соседних элемента, которые равны (или удовлетворяют заданному предикату)
(функциональный объект алгоритма)
возвращает количество элементов, удовлетворяющих определённым критериям
(шаблон функции)
возвращает количество элементов, удовлетворяющих определённым критериям
(функциональный объект алгоритма)
находит первую позицию, где два диапазона различаются
(шаблон функции)
находит первую позицию, в которой два диапазона различаются
(функциональный объект алгоритма)
определяет, являются ли два набора элементов одинаковыми
(шаблон функции)
определяет, являются ли два набора элементов одинаковыми
(функциональный объект алгоритма)
выполняет поиск первого вхождения диапазона элементов
(шаблон функции)
выполняет поиск первого вхождения диапазона элементов
(функциональный объект алгоритма)
ищет первое вхождение заданного количества последовательных копий элемента в диапазоне
(шаблон функции)
ищет первое вхождение заданного количества последовательных копий элемента в диапазоне
(функциональный объект алгоритма)
проверяет, начинается ли диапазон с другого диапазона
(функциональный объект алгоритма)
проверяет, заканчивается ли диапазон другим диапазоном
(функциональный объект алгоритма)

Сворачивающие операции (начиная с C++23)

Определено в заголовочном файле <algorithm>
левостороннее свертывание диапазона элементов
(объект-функция алгоритма)
левостороннее свертывание диапазона элементов с использованием первого элемента в качестве начального значения
(объект-функция алгоритма)
правостороннее свертывание диапазона элементов
(объект-функция алгоритма)
правостороннее свертывание диапазона элементов с использованием последнего элемента в качестве начального значения
(объект-функция алгоритма)
левостороннее свертывание диапазона элементов и возврат пары (итератор, значение)
(объект-функция алгоритма)
левостороннее свертывание диапазона элементов с использованием первого элемента в качестве начального значения и возврат пары (итератор, optional )
(объект-функция алгоритма)

Операции модификации последовательностей

Операции копирования

Определено в заголовке <algorithm>
копирует диапазон элементов в новое место
(шаблон функции)
копирует диапазон элементов в новое место
(функциональный объект алгоритма)
(C++11)
копирует указанное количество элементов в новое место
(шаблон функции)
копирует указанное количество элементов в новое место
(функциональный объект алгоритма)
копирует диапазон элементов в обратном порядке
(шаблон функции)
копирует диапазон элементов в обратном порядке
(функциональный объект алгоритма)
(C++11)
перемещает диапазон элементов в новое место
(шаблон функции)
перемещает диапазон элементов в новое место
(функциональный объект алгоритма)
перемещает диапазон элементов в новое место в обратном порядке
(шаблон функции)
перемещает диапазон элементов в новое место в обратном порядке
(функциональный объект алгоритма)

Операции обмена

Определено в заголовочном файле <algorithm> (до C++11)
Определено в заголовочном файле <utility> (начиная с C++11)
Определено в заголовочном файле <string_view>
обменивает значения двух объектов
(шаблон функции)
Определено в заголовочном файле <algorithm>
обменивает два диапазона элементов
(шаблон функции)
обменивает два диапазона элементов
(функциональный объект алгоритма)
обменивает элементы, на которые указывают два итератора
(шаблон функции)

Операции преобразования

Определено в заголовочном файле <algorithm>
применяет функцию к диапазону элементов, сохраняя результаты в целевом диапазоне
(шаблон функции)
применяет функцию к диапазону элементов
(функциональный объект алгоритма)
заменяет все значения, удовлетворяющие определенным критериям, другим значением
(шаблон функции)
заменяет все значения, удовлетворяющие определенным критериям, другим значением
(функциональный объект алгоритма)
копирует диапазон, заменяя элементы, удовлетворяющие определенным критериям, другим значением
(шаблон функции)
копирует диапазон, заменяя элементы, удовлетворяющие определенным критериям, другим значением
(функциональный объект алгоритма)

Операции генерации

Определено в заголовке <algorithm>
копирует-присваивает заданное значение каждому элементу в диапазоне
(шаблон функции)
присваивает диапазону элементов определенное значение
(функциональный объект алгоритма)
копирует-присваивает заданное значение N элементам в диапазоне
(шаблон функции)
присваивает значение определенному количеству элементов
(функциональный объект алгоритма)
присваивает результаты последовательных вызовов функции каждому элементу в диапазоне
(шаблон функции)
сохраняет результат функции в диапазоне
(функциональный объект алгоритма)
присваивает результаты последовательных вызовов функции N элементам в диапазоне
(шаблон функции)
сохраняет результат N применений функции
(функциональный объект алгоритма)

Операции удаления

Определено в заголовочном файле <algorithm>
удаляет элементы, удовлетворяющие определенным критериям
(шаблон функции)
удаляет элементы, удовлетворяющие определенным критериям
(функциональный объект алгоритма)
копирует диапазон элементов, пропуская те, которые удовлетворяют определенным критериям
(шаблон функции)
копирует диапазон элементов, пропуская те, которые удовлетворяют определенным критериям
(функциональный объект алгоритма)
удаляет последовательные дублирующиеся элементы в диапазоне
(шаблон функции)
удаляет последовательные дублирующиеся элементы в диапазоне
(функциональный объект алгоритма)
создает копию некоторого диапазона элементов, не содержащую последовательных дубликатов
(шаблон функции)
создает копию некоторого диапазона элементов, не содержащую последовательных дубликатов
(функциональный объект алгоритма)

Операции изменения порядка

Определено в заголовочном файле <algorithm>
изменяет порядок элементов в диапазоне на обратный
(шаблон функции)
изменяет порядок элементов в диапазоне на обратный
(объект-функция алгоритма)
создает копию диапазона с обратным порядком элементов
(шаблон функции)
создает копию диапазона с обратным порядком элементов
(объект-функция алгоритма)
циклически сдвигает элементы в диапазоне
(шаблон функции)
циклически сдвигает элементы в диапазоне
(объект-функция алгоритма)
копирует и циклически сдвигает элементы диапазона
(шаблон функции)
копирует и циклически сдвигает элементы диапазона
(объект-функция алгоритма)
сдвигает элементы в диапазоне
(шаблон функции)
сдвигает элементы в диапазоне
(объект-функция алгоритма)
(до C++17) (C++11)
случайным образом переупорядочивает элементы в диапазоне
(шаблон функции)
случайным образом переупорядочивает элементы в диапазоне
(объект-функция алгоритма)

Операции выборки

Определено в заголовочном файле <algorithm>
(C++17)
выбирает N случайных элементов из последовательности
(шаблон функции)
выбирает N случайных элементов из последовательности
(функциональный объект алгоритма)

Сортировка и связанные операции

Требования

Некоторые алгоритмы требуют, чтобы последовательность, представленная аргументами, была «отсортирована» или «разделена». Поведение не определено, если требование не выполняется.

Последовательность является отсортированной относительно компаратора comp если для каждого итератора iter указывающего на последовательность и каждого неотрицательного целого числа n такого что iter + n [1] является валидным итератором указывающим на элемент последовательности, comp ( * ( iter + n ) , * iter ) == false [1] .

(до C++20)

Последовательность является отсортированной относительно comp и proj для компаратора comp и проекции proj если для каждого итератора iter указывающего на последовательность и каждого неотрицательного целого числа n такого что iter + n [1] является валидным итератором указывающим на элемент последовательности, bool ( std:: invoke ( comp, std:: invoke ( proj, * ( iter + n ) ) ,
std:: invoke ( proj, * iter ) ) )
[1] является false .

Последовательность является отсортированной относительно компаратора comp если последовательность отсортирована относительно comp и std:: identity { } (проекции идентичности).

(начиная с C++20)

Последовательность [ start , finish ) является разделённой относительно выражения f ( e ) если существует целое число n такое, что для всех i в [ 0 , std:: distance ( start, finish ) ) , f ( * ( start + i ) ) [1] равно true тогда и только тогда, когда i < n .

  1. 1.0 1.1 1.2 1.3 1.4 iter + n просто означает «результат iter после n инкрементов», независимо от того, является ли iter итератором произвольного доступа.

Операции разделения

Определено в заголовочном файле <algorithm>
определяет, разделен ли диапазон заданным предикатом
(шаблон функции)
определяет, разделен ли диапазон заданным предикатом
(объект-функция алгоритма)
разделяет диапазон элементов на две группы
(шаблон функции)
разделяет диапазон элементов на две группы
(объект-функция алгоритма)
копирует диапазон, разделяя элементы на две группы
(шаблон функции)
копирует диапазон, разделяя элементы на две группы
(объект-функция алгоритма)
разделяет элементы на две группы, сохраняя их относительный порядок
(шаблон функции)
разделяет элементы на две группы, сохраняя их относительный порядок
(объект-функция алгоритма)
находит точку разделения разделенного диапазона
(шаблон функции)
находит точку разделения разделенного диапазона
(объект-функция алгоритма)

Операции сортировки

Определено в заголовочном файле <algorithm>
сортирует диапазон в порядке возрастания
(шаблон функции)
сортирует диапазон в порядке возрастания
(функциональный объект алгоритма)
сортирует диапазон элементов, сохраняя порядок между равными элементами
(шаблон функции)
сортирует диапазон элементов, сохраняя порядок между равными элементами
(функциональный объект алгоритма)
сортирует первые N элементов диапазона
(шаблон функции)
сортирует первые N элементов диапазона
(функциональный объект алгоритма)
копирует и частично сортирует диапазон элементов
(шаблон функции)
копирует и частично сортирует диапазон элементов
(функциональный объект алгоритма)
(C++11)
проверяет, отсортирован ли диапазон в порядке возрастания
(шаблон функции)
проверяет, отсортирован ли диапазон в порядке возрастания
(функциональный объект алгоритма)
находит наибольший отсортированный поддиапазон
(шаблон функции)
находит наибольший отсортированный поддиапазон
(функциональный объект алгоритма)
частично сортирует заданный диапазон, обеспечивая его разделение по заданному элементу
(шаблон функции)
частично сортирует заданный диапазон, обеспечивая его разделение по заданному элементу
(функциональный объект алгоритма)

Операции двоичного поиска (на разделённых диапазонах)

Определено в заголовочном файле <algorithm>
возвращает итератор на первый элемент не меньший заданного значения
(шаблон функции)
возвращает итератор на первый элемент не меньший заданного значения
(объект-функция алгоритма)
возвращает итератор на первый элемент больший определённого значения
(шаблон функции)
возвращает итератор на первый элемент больший определённого значения
(объект-функция алгоритма)
возвращает диапазон элементов, соответствующих определённому ключу
(шаблон функции)
возвращает диапазон элементов, соответствующих определённому ключу
(объект-функция алгоритма)
определяет, существует ли элемент в частично упорядоченном диапазоне
(шаблон функции)
определяет, существует ли элемент в частично упорядоченном диапазоне
(объект-функция алгоритма)

Операции с множествами (на отсортированных диапазонах)

Определено в заголовке <algorithm>
возвращает true если одна последовательность является подпоследовательностью другой
(шаблон функции)
возвращает true если одна последовательность является подпоследовательностью другой
(объект-функция алгоритма)
вычисляет объединение двух множеств
(шаблон функции)
вычисляет объединение двух множеств
(объект-функция алгоритма)
вычисляет пересечение двух множеств
(шаблон функции)
вычисляет пересечение двух множеств
(объект-функция алгоритма)
вычисляет разность двух множеств
(шаблон функции)
вычисляет разность двух множеств
(объект-функция алгоритма)
вычисляет симметрическую разность двух множеств
(шаблон функции)
вычисляет симметрическую разность двух множеств
(объект-функция алгоритма)

Операции слияния (для отсортированных диапазонов)

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

Операции с кучей

Произвольный доступный диапазон [ first , last ) является кучей относительно компаратора comp если bool ( comp ( first [ ( i - 1 ) / 2 ] , first [ i ] ) ) равен false для всех целых чисел i в ( 0 , last - first ) .

(до C++20)

Произвольный доступный диапазон [ first , last ) является кучей относительно comp и proj для компаратора comp и проекции proj если bool ( std:: invoke ( comp, std:: invoke ( proj, first [ ( i - 1 ) / 2 ] ) ,
std:: invoke ( proj, first [ i ] ) )
равен false для всех целых чисел i в ( 0 , last - first ) .

Произвольный доступный диапазон [ first , last ) является кучей относительно компаратора comp если диапазон является кучей относительно comp и std:: identity { } (проекции идентичности).

(начиная с C++20)

Куча может быть создана с помощью std::make_heap и ranges::make_heap (начиная с C++20) .

Для получения дополнительных свойств кучи см. max heap .


Определено в заголовочном файле <algorithm>
добавляет элемент в max heap
(шаблон функции)
добавляет элемент в max heap
(функциональный объект алгоритма)
удаляет наибольший элемент из max heap
(шаблон функции)
удаляет наибольший элемент из max heap
(функциональный объект алгоритма)
создает max heap из диапазона элементов
(шаблон функции)
создает max heap из диапазона элементов
(функциональный объект алгоритма)
преобразует max heap в диапазон элементов, отсортированных в порядке возрастания
(шаблон функции)
преобразует max heap в диапазон элементов, отсортированных в порядке возрастания
(функциональный объект алгоритма)
(C++11)
проверяет, является ли заданный диапазон max heap
(шаблон функции)
проверяет, является ли заданный диапазон max heap
(функциональный объект алгоритма)
находит наибольший поддиапазон, который является max heap
(шаблон функции)
находит наибольший поддиапазон, который является max heap
(функциональный объект алгоритма)

Операции минимума/максимума

Определено в заголовочном файле <algorithm>
возвращает большее из заданных значений
(шаблон функции)
возвращает большее из заданных значений
(функциональный объект алгоритма)
возвращает наибольший элемент в диапазоне
(шаблон функции)
возвращает наибольший элемент в диапазоне
(функциональный объект алгоритма)
возвращает меньшее из заданных значений
(шаблон функции)
возвращает меньшее из заданных значений
(функциональный объект алгоритма)
возвращает наименьший элемент в диапазоне
(шаблон функции)
возвращает наименьший элемент в диапазоне
(функциональный объект алгоритма)
(C++11)
возвращает меньшее и большее из двух элементов
(шаблон функции)
возвращает меньшее и большее из двух элементов
(функциональный объект алгоритма)
возвращает наименьший и наибольший элементы в диапазоне
(шаблон функции)
возвращает наименьший и наибольший элементы в диапазоне
(функциональный объект алгоритма)
(C++17)
ограничивает значение между парой граничных значений
(шаблон функции)
ограничивает значение между парой граничных значений
(функциональный объект алгоритма)

Лексикографические операции сравнения

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

Операции перестановки

Определено в заголовочном файле <algorithm>
генерирует следующую большую лексикографическую перестановку диапазона элементов
(шаблон функции)
генерирует следующую большую лексикографическую перестановку диапазона элементов
(функциональный объект алгоритма)
генерирует следующую меньшую лексикографическую перестановку диапазона элементов
(шаблон функции)
генерирует следующую меньшую лексикографическую перестановку диапазона элементов
(функциональный объект алгоритма)
определяет, является ли последовательность перестановкой другой последовательности
(шаблон функции)
определяет, является ли последовательность перестановкой другой последовательности
(функциональный объект алгоритма)

Числовые операции

Определено в заголовочном файле <numeric>
(C++11)
заполняет диапазон последовательными приращениями начального значения
(шаблон функции)
заполняет диапазон последовательными приращениями начального значения
(функциональный объект алгоритма)
суммирует или сворачивает диапазон элементов
(шаблон функции)
вычисляет скалярное произведение двух диапазонов элементов
(шаблон функции)
вычисляет разности между соседними элементами в диапазоне
(шаблон функции)
вычисляет частичную сумму диапазона элементов
(шаблон функции)
(C++17)
аналогично std::accumulate , но без сохранения порядка
(шаблон функции)
аналогично std::partial_sum , исключает i входной элемент из i суммы
(шаблон функции)
аналогично std::partial_sum , включает i входной элемент в i сумму
(шаблон функции)
применяет вызываемый объект, затем выполняет редукцию без сохранения порядка
(шаблон функции)
применяет вызываемый объект, затем вычисляет исключающее сканирование
(шаблон функции)
применяет вызываемый объект, затем вычисляет включающее сканирование
(шаблон функции)

Операции с неинициализированной памятью

Определено в заголовочном файле <memory>
копирует диапазон объектов в неинициализированную область памяти
(шаблон функции)
копирует диапазон объектов в неинициализированную область памяти
(объект-функция алгоритма)
копирует несколько объектов в неинициализированную область памяти
(шаблон функции)
копирует несколько объектов в неинициализированную область памяти
(объект-функция алгоритма)
копирует объект в неинициализированную область памяти, заданную диапазоном
(шаблон функции)
копирует объект в неинициализированную область памяти, определяемую диапазоном
(объект-функция алгоритма)
копирует объект в неинициализированную область памяти, определяемую началом и количеством
(шаблон функции)
копирует объект в неинициализированную область памяти, определяемую началом и количеством
(функциональный объект алгоритма)
перемещает диапазон объектов в неинициализированную область памяти
(шаблон функции)
перемещает диапазон объектов в неинициализированную область памяти
(функциональный объект алгоритма)
перемещает ряд объектов в неинициализированную область памяти
(шаблон функции)
перемещает несколько объектов в неинициализированную область памяти
(объект-функция алгоритма)
конструирует объекты с помощью default-initialization в неинициализированной области памяти, определяемой диапазоном
(шаблон функции)
конструирует объекты с помощью default-initialization в неинициализированной области памяти, заданной диапазоном
(объект-функция алгоритма)
конструирует объекты с помощью default-initialization в неинициализированной области памяти, заданной началом и количеством
(шаблон функции)
конструирует объекты с помощью default-initialization в неинициализированной области памяти, заданной началом и количеством
(функциональный объект алгоритма)
создаёт объекты с помощью value-initialization в неинициализированной области памяти, определяемой диапазоном
(шаблон функции)
создаёт объекты с помощью value-initialization в неинициализированной области памяти, определённой диапазоном
(функциональный объект алгоритма)
создаёт объекты с помощью value-initialization в неинициализированной области памяти, заданной началом и количеством
(шаблон функции)
создаёт объекты с помощью value-initialization в неинициализированной области памяти, заданной началом и количеством
(функциональный объект алгоритма)
(C++17)
уничтожает диапазон объектов
(шаблон функции)
уничтожает диапазон объектов
(функциональный объект алгоритма)
(C++17)
уничтожает ряд объектов в диапазоне
(шаблон функции)
уничтожает несколько объектов в диапазоне
(функциональный объект алгоритма)
(C++17)
уничтожает объект по заданному адресу
(шаблон функции)
уничтожает объект по заданному адресу
(функциональный объект алгоритма)
создает объект по заданному адресу
(function template)
создает объект по заданному адресу
(функциональный объект алгоритма)

Генерация случайных чисел (since C++26)

Определено в заголовке <random>
заполняет диапазон случайными числами из равномерного генератора случайных битов
(функциональный объект алгоритма)

Примечания

Макрос тестирования возможностей Значение Стандарт Возможность
__cpp_lib_algorithm_iterator_requirements 202207L (C++23) Итераторы диапазонов как входные данные для алгоритмов не-диапазонов
__cpp_lib_clamp 201603L (C++17) std::clamp
__cpp_lib_constexpr_algorithms 201806L (C++20) Constexpr для алгоритмов
202306L (C++26) Constexpr стабильная сортировка
__cpp_lib_algorithm_default_value_type 202403L (C++26) Списковая инициализация для алгоритмов
__cpp_lib_freestanding_algorithm 202311L (C++26) Автономные средства в <algorithm>
__cpp_lib_robust_nonmodifying_seq_ops 201304L (C++14) Повышение надежности немодифицирующих последовательных операций (перегрузки для двух диапазонов std::mismatch , std::equal и std::is_permutation)
__cpp_lib_sample 201603L (C++17) std::sample
__cpp_lib_shift 201806L (C++20) std::shift_left и std::shift_right

Библиотека C

Определено в заголовочном файле <cstdlib>
сортирует диапазон элементов с неуказанным типом
(функция)
выполняет поиск элемента с неуказанным типом в массиве
(функция)

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 193 C++98 heap required * first to be the largest element there can be elements
equal to * first
LWG 2150 C++98 the definition of a sorted sequence was incorrect corrected
LWG 2166 C++98 the heap requirement did not match the
definition of max heap closely enough
requirement improved

Смотрите также

C documentation для Algorithms