Spec-Zone.ru › C++

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

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

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

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

std::vector<int> v {7, 1, 4, 0, -1};
std::ranges::sort(v); // constrained algorithm
(с 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
sequenced_policyparallel_policyparallel_unsequenced_policyunsequenced_policy
(C++17)(C++17)(C++17)(C++20)
типы политики выполнения
(класс)
seqparpar_unsequnseq
(C++17)(C++17)(C++17)(C++20)
глобальные объекты политики выполнения
(константа)
Определено в пространстве имён std
is_execution_policy
(C++17)
проверка, представляет ли класс политику выполнения
(шаблон класса)
Тестирование возможностей макрос Значение Std Функция
__cpp_lib_parallel_algorithm 201603L (C++17) Параллельные алгоритмы
__cpp_lib_execution 201603L (C++17) Политики выполнения
201902L (C++20) std::execution::unsequenced_policy
(с C++17)

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

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

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

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

Определено в заголовке <algorithm>
all_ofany_ofnone_of
(C++11)(C++11)(C++11)
проверяет, является ли предикат true для всех, любого или ни одного из элементов в диапазоне
(функция-шаблон)
ranges::all_ofranges::any_ofranges::none_of
(C++20)(C++20)(C++20)
проверяет, является ли предикат true для всех, любого или ни одного из элементов в диапазоне
(niebloid)
ranges::containsranges::contains_subrange
(C++23)(C++23)
проверяет, содержит ли диапазон заданный элемент или поддиапазон
(niebloid)
findfind_iffind_if_not
(C++11)
находит первый элемент, удовлетворяющий определенным критериям
(функция-шаблон)
ranges::findranges::find_ifranges::find_if_not
(C++20)(C++20)(C++20)
находит первый элемент, удовлетворяющий определенным критериям
(niebloid)
ranges::find_lastranges::find_last_ifranges::find_last_if_not
(C++23)(C++23)(C++23)
находит последний элемент, удовлетворяющий определенным критериям
(niebloid)
find_end
находит последнюю последовательность элементов в определенном диапазоне
(функция-шаблон)
ranges::find_end
(C++20)
находит последнюю последовательность элементов в определенном диапазоне
(niebloid)
find_first_of
ищет любой из набора элементов
(функция-шаблон)
ranges::find_first_of
(C++20)
ищет любой из набора элементов
(niebloid)
adjacent_find
находит первые два смежных элемента, которые равны (или удовлетворяют заданному предикату)
(функция-шаблон)
ranges::adjacent_find
(C++20)
находит первые два смежных элемента, которые равны (или удовлетворяют заданному предикату)
(niebloid)
countcount_if
возвращает количество элементов, удовлетворяющих определенным критериям
(функция-шаблон)
ranges::countranges::count_if
(C++20)(C++20)
возвращает количество элементов, удовлетворяющих определенным критериям
(niebloid)
mismatch
находит первую позицию, где два диапазона отличаются
(функция-шаблон)
ranges::mismatch
(C++20)
находит первую позицию, где два диапазона отличаются
(niebloid)
equal
определяет, совпадают ли два набора элементов
(функция-шаблон)
ranges::equal
(C++20)
определяет, совпадают ли два набора элементов
(niebloid)
search
ищет диапазон элементов
(функция-шаблон)
ranges::search
(C++20)
ищет диапазон элементов
(niebloid)
search_n
ищет диапазон для определенного количества последовательных копий элемента
(функция-шаблон)
ranges::search_n
(C++20)
ищет определенное количество последовательных копий элемента в диапазоне
(niebloid)
ranges::starts_with
(C++23)
проверяет, начинается ли диапазон с другого диапазона
(niebloid)
ranges::ends_with
(C++23)
проверяет, заканчивается ли диапазон другим диапазоном
(niebloid)

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

Определено в заголовке <algorithm>
ranges::fold_left
(C++23)
слева-складывает диапазон элементов
(niebloid)
ranges::fold_left_first
(C++23)
слева-складывает диапазон элементов, используя первый элемент в качестве начального значения
(niebloid)
ranges::fold_right
(C++23)
справа-складывает диапазон элементов
(niebloid)
ranges::fold_right_last
(C++23)
справа-складывает диапазон элементов, используя последний элемент в качестве начального значения
(niebloid)
ranges::fold_left_with_iter
(C++23)
слева-складывает диапазон элементов и возвращает пару (итератор, значение)
(niebloid)
ranges::fold_left_first_with_iter
(C++23)
слева-складывает диапазон элементов, используя первый элемент в качестве начального значения, и возвращает пару (итератор, необязательный)
(niebloid)

Изменяющие операции над последовательностями

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

Определено в заголовке <algorithm>
copycopy_if
(C++11)
копирует диапазон элементов в новое местоположение
(функция-шаблон)
ranges::copyranges::copy_if
(C++20)(C++20)
копирует диапазон элементов в новое местоположение
(niebloid)
copy_n
(C++11)
копирует заданное количество элементов в новое местоположение
(функция-шаблон)
ranges::copy_n
(C++20)
копирует заданное количество элементов в новое местоположение
(niebloid)
copy_backward
копирует диапазон элементов в обратном порядке
(функция-шаблон)
ranges::copy_backward
(C++20)
копирует диапазон элементов в обратном порядке
(niebloid)
move
(C++11)
перемещает диапазон элементов в новое местоположение
(функция-шаблон)
ranges::move
(C++20)
перемещает диапазон элементов в новое местоположение
(niebloid)
move_backward
(C++11)
перемещает диапазон элементов в новое местоположение в обратном порядке
(функция-шаблон)
ranges::move_backward
(C++20)
перемещает диапазон элементов в новое местоположение в обратном порядке
(niebloid)

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

Определено в заголовке <algorithm>
swap
меняет значения двух объектов
(функция-шаблон)
swap_ranges
меняет два диапазона элементов
(функция-шаблон)
ranges::swap_ranges
(C++20)
меняет два диапазона элементов
(niebloid)
iter_swap
меняет элементы, на которые указывают два итератора
(функция-шаблон)

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

Определено в заголовке <algorithm>
transform
применяет функцию к диапазону элементов, сохраняя результаты в целевом диапазоне
(функция-шаблон)
ranges::transform
(C++20)
применяет функцию к диапазону элементов
(niebloid)
replacereplace_if
заменяет все значения, удовлетворяющие определенным критериям, другим значением
(функция-шаблон)
ranges::replaceranges::replace_if
(C++20)(C++20)
заменяет все значения, удовлетворяющие определенным критериям, другим значением
(niebloid)
replace_copyreplace_copy_if
копирует диапазон, заменяя элементы, удовлетворяющие определенным критериям, другим значением
(функция-шаблон)
ranges::replace_copyranges::replace_copy_if
(C++20)(C++20)
копирует диапазон, заменяя элементы, удовлетворяющие определенным критериям, другим значением
(niebloid)

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

Определено в заголовке <algorithm>
fill
копирует заданное значение во все элементы в диапазоне
(шаблон функции)
ranges::fill
(C++20)
присваивает диапазону элементов определенное значение
(niebloid)
fill_n
копирует заданное значение в N элементов в диапазоне
(шаблон функции)
ranges::fill_n
(C++20)
присваивает значение определенному числу элементов
(niebloid)
generate
присваивает результаты последовательных вызовов функции каждому элементу в диапазоне
(шаблон функции)
ranges::generate
(C++20)
сохраняет результат функции в диапазоне
(niebloid)
generate_n
присваивает результаты последовательных вызовов функции N элементам в диапазоне
(шаблон функции)
ranges::generate_n
(C++20)
сохраняет результат N применений функции
(niebloid)

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

Определено в заголовке <algorithm>
removeremove_if
удаляет элементы, удовлетворяющие определенным критериям
(шаблон функции)
ranges::removeranges::remove_if
(C++20)(C++20)
удаляет элементы, удовлетворяющие определенным критериям
(niebloid)
remove_copyremove_copy_if
копирует диапазон элементов, опуская те, которые удовлетворяют определенным критериям
(шаблон функции)
ranges::remove_copyranges::remove_copy_if
(C++20)(C++20)
копирует диапазон элементов, опуская те, которые удовлетворяют определенным критериям
(niebloid)
unique
удаляет последовательные дубликаты элементов в диапазоне
(шаблон функции)
ranges::unique
(C++20)
удаляет последовательные дубликаты элементов в диапазоне
(niebloid)
unique_copy
создает копию некоторого диапазона элементов, не содержащего последовательных дубликатов
(шаблон функции)
ranges::unique_copy
(C++20)
создает копию некоторого диапазона элементов, не содержащего последовательных дубликатов
(niebloid)

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

Определено в заголовке <algorithm>
reverse
изменяет порядок элементов в диапазоне на обратный
(шаблон функции)
ranges::reverse
(C++20)
изменяет порядок элементов в диапазоне на обратный
(niebloid)
reverse_copy
создает копию диапазона с измененным порядком на обратный
(шаблон функции)
ranges::reverse_copy
(C++20)
создает копию диапазона с измененным порядком на обратный
(niebloid)
rotate
вращает порядок элементов в диапазоне
(шаблон функции)
ranges::rotate
(C++20)
вращает порядок элементов в диапазоне
(niebloid)
rotate_copy
копирует и вращает диапазон элементов
(шаблон функции)
ranges::rotate_copy
(C++20)
копирует и вращает диапазон элементов
(niebloid)
shift_leftshift_right
(C++20)
сдвигает элементы в диапазоне
(шаблон функции)
random_shuffleshuffle
(до C++17)(C++11)
случайным образом меняет порядок элементов в диапазоне
(шаблон функции)
ranges::shuffle
(C++20)
случайным образом меняет порядок элементов в диапазоне
(niebloid)
ranges::shift_leftranges::shift_right
(C++23)
сдвигает элементы в диапазоне
(niebloid)

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

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

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

Требования

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

Последовательность отсортирована относительно компаратора 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. iter + n просто означает «результат iter, инкрементированного n раз», независимо от того, является ли iter итератором произвольного доступа.

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

Определено в заголовке <algorithm>
is_partitioned
(C++11)
определяет, является ли диапазон разделимым заданным предикатом
(шаблон функции)
ranges::is_partitioned
(C++20)
определяет, является ли диапазон разделимым заданным предикатом
(niebloid)
partition
делит диапазон элементов на две группы
(шаблон функции)
ranges::partition
(C++20)
делит диапазон элементов на две группы
(niebloid)
partition_copy
(C++11)
копирует диапазон, деля элементы на две группы
(шаблон функции)
ranges::partition_copy
(C++20)
копирует диапазон, деля элементы на две группы
(niebloid)
stable_partition
делит элементы на две группы, сохраняя их относительный порядок
(шаблон функции)
ranges::stable_partition
(C++20)
делит элементы на две группы, сохраняя их относительный порядок
(niebloid)
partition_point
(C++11)
находит точку разделения разделимого диапазона
(шаблон функции)
ranges::partition_point
(C++20)
находит точку разделения разделимого диапазона
(niebloid)

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

Определено в заголовке <algorithm>
sort
сортирует диапазон в порядке возрастания
(шаблон функции)
ranges::sort
(C++20)
сортирует диапазон в порядке возрастания
(niebloid)
stable_sort
сортирует диапазон элементов, сохраняя порядок между равными элементами
(шаблон функции)
ranges::stable_sort
(C++20)
сортирует диапазон элементов, сохраняя порядок между равными элементами
(niebloid)
partial_sort
сортирует первые N элементов диапазона
(шаблон функции)
ranges::partial_sort
(C++20)
сортирует первые N элементов диапазона
(niebloid)
partial_sort_copy
копирует и частично сортирует диапазон элементов
(шаблон функции)
ranges::partial_sort_copy
(C++20)
копирует и частично сортирует диапазон элементов
(niebloid)
is_sorted
(C++11)
проверяет, отсортирован ли диапазон в порядке возрастания
(шаблон функции)
ranges::is_sorted
(C++20)
проверяет, отсортирован ли диапазон в порядке возрастания
(niebloid)
is_sorted_until
(C++11)
находит наибольший отсортированный поддиапазон
(шаблон функции)
ranges::is_sorted_until
(C++20)
находит наибольший отсортированный поддиапазон
(niebloid)
nth_element
частично сортирует заданный диапазон, гарантируя, что он разбит заданным элементом
(шаблон функции)
ranges::nth_element
(C++20)
частично сортирует заданный диапазон, гарантируя, что он разбит заданным элементом
(niebloid)

Операции бинарного поиска (для разбиения диапазонов)

Определено в заголовке <algorithm>
lower_bound
возвращает итератор на первый элемент, не меньший данного значения
(шаблон функции)
ranges::lower_bound
(C++20)
возвращает итератор на первый элемент, не меньший данного значения
(niebloid)
upper_bound
возвращает итератор на первый элемент, больший определенного значения
(шаблон функции)
ranges::upper_bound
(C++20)
возвращает итератор на первый элемент, больший определенного значения
(niebloid)
equal_range
возвращает диапазон элементов, соответствующих определенному ключу
(шаблон функции)
ranges::equal_range
(C++20)
возвращает диапазон элементов, соответствующих определенному ключу
(niebloid)
binary_search
определяет, существует ли элемент в частично упорядоченном диапазоне
(шаблон функции)
ranges::binary_search
(C++20)
определяет, существует ли элемент в частично упорядоченном диапазоне
(niebloid)

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

Определено в заголовке <algorithm>
includes
возвращает true , если одна последовательность является подпоследовательностью другой
(шаблон функции)
ranges::includes
(C++20)
возвращает true , если одна последовательность является подпоследовательностью другой
(niebloid)
set_union
вычисляет объединение двух множеств
(шаблон функции)
ranges::set_union
(C++20)
вычисляет объединение двух множеств
(niebloid)
set_intersection
вычисляет пересечение двух множеств
(шаблон функции)
ranges::set_intersection
(C++20)
вычисляет пересечение двух множеств
(niebloid)
set_difference
вычисляет разность между двумя множествами
(шаблон функции)
ranges::set_difference
(C++20)
вычисляет разность между двумя множествами
(niebloid)
set_symmetric_difference
вычисляет симметрическую разность между двумя множествами
(шаблон функции)
ranges::set_symmetric_difference
(C++20)
вычисляет симметрическую разность между двумя множествами
(niebloid)

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

Определено в заголовке <algorithm>
merge
сливает два отсортированных диапазона
(шаблон функции)
ranges::merge
(C++20)
сливает два отсортированных диапазона
(niebloid)
inplace_merge
сливает два упорядоченных диапазона на месте
(шаблон функции)
ranges::inplace_merge
(C++20)
сливает два упорядоченных диапазона на месте
(niebloid)

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

Определено в заголовке <algorithm>
push_heap
добавляет элемент в кучу максимального значения
(шаблон функции)
ranges::push_heap
(C++20)
добавляет элемент в кучу максимального значения
(niebloid)
pop_heap
удаляет наибольший элемент из кучи максимального значения
(шаблон функции)
ranges::pop_heap
(C++20)
удаляет наибольший элемент из кучи максимального значения
(niebloid)
make_heap
создаёт кучу максимального значения из диапазона элементов
(шаблон функции)
ranges::make_heap
(C++20)
создаёт кучу максимального значения из диапазона элементов
(niebloid)
sort_heap
преобразует кучу максимального значения в диапазон элементов, отсортированных в порядке возрастания
(шаблон функции)
ranges::sort_heap
(C++20)
преобразует кучу максимального значения в диапазон элементов, отсортированных в порядке возрастания
(niebloid)
is_heap
(C++11)
проверяет, является ли заданный диапазон кучей максимального значения
(шаблон функции)
ranges::is_heap
(C++20)
проверяет, является ли заданный диапазон кучей максимального значения
(niebloid)
is_heap_until
(C++11)
находит наибольший поддиапазон, являющийся кучей максимального значения
(шаблон функции)
ranges::is_heap_until
(C++20)
находит наибольший поддиапазон, являющийся кучей максимального значения
(niebloid)

Минимальные/максимальные операции

Определено в заголовке <algorithm>
max
возвращает большее из заданных значений
(шаблон функции)
ranges::max
(C++20)
возвращает большее из заданных значений
(niebloid)
max_element
возвращает наибольший элемент в диапазоне
(шаблон функции)
ranges::max_element
(C++20)
возвращает наибольший элемент в диапазоне
(niebloid)
min
возвращает меньшее из заданных значений
(шаблон функции)
ranges::min
(C++20)
возвращает меньшее из заданных значений
(niebloid)
min_element
возвращает наименьший элемент в диапазоне
(шаблон функции)
ranges::min_element
(C++20)
возвращает наименьший элемент в диапазоне
(niebloid)
minmax
(C++11)
возвращает меньший и больший из двух элементов
(шаблон функции)
ranges::minmax
(C++20)
возвращает меньший и больший из двух элементов
(niebloid)
minmax_element
(C++11)
возвращает наименьший и наибольший элементы в диапазоне
(шаблон функции)
ranges::minmax_element
(C++20)
возвращает наименьший и наибольший элементы в диапазоне
(niebloid)
clamp
(C++17)
ограничивает значение между парой граничных значений
(шаблон функции)
ranges::clamp
(C++20)
ограничивает значение между парой граничных значений
(niebloid)

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

Определено в заголовке <algorithm>
lexicographical_compare
возвращает true если один диапазон лексикографически меньше другого
(шаблон функции)
ranges::lexicographical_compare
(C++20)
возвращает true если один диапазон лексикографически меньше другого
(niebloid)
lexicographical_compare_three_way
(C++20)
сравнивает два диапазона с помощью трехстороннего сравнения
(шаблон функции)

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

Определено в заголовке <algorithm>
next_permutation
генерирует следующее большее лексикографическое перестановку диапазона элементов
(шаблон функции)
ranges::next_permutation
(C++20)
генерирует следующее большее лексикографическое перестановку диапазона элементов
(niebloid)
prev_permutation
генерирует следующую меньшую лексикографическую перестановку диапазона элементов
(шаблон функции)
ranges::prev_permutation
(C++20)
генерирует следующую меньшую лексикографическую перестановку диапазона элементов
(niebloid)
is_permutation
(C++11)
определяет, является ли последовательность перестановкой другой последовательности
(шаблон функции)
ranges::is_permutation
(C++20)
определяет, является ли последовательность перестановкой другой последовательности
(niebloid)

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

Определено в заголовке <numeric>
iota
(C++11)
заполняет диапазон последовательными приращениями начального значения
(шаблон функции)
ranges::iota
(C++23)
заполняет диапазон последовательными приращениями начального значения
(niebloid)
accumulate
суммирует или сворачивает диапазон элементов
(шаблон функции)
inner_product
вычисляет скалярное произведение двух диапазонов элементов
(шаблон функции)
adjacent_difference
вычисляет разности между смежными элементами в диапазоне
(шаблон функции)
partial_sum
вычисляет частичную сумму диапазона элементов
(шаблон функции)
reduce
(C++17)
аналогично std::accumulate, но в произвольном порядке
(шаблон функции)
exclusive_scan
(C++17)
аналогично std::partial_sum, исключает i-й элемент входных данных из i-й суммы
(шаблон функции)
inclusive_scan
(C++17)
аналогично std::partial_sum, включает i-й элемент входных данных в i-ю сумму
(шаблон функции)
transform_reduce
(C++17)
применяет вызываемый объект, затем сворачивает в произвольном порядке
(шаблон функции)
transform_exclusive_scan
(C++17)
применяет вызываемый объект, затем вычисляет эксклюзивное сканирование
(шаблон функции)
transform_inclusive_scan
(C++17)
применяет вызываемый объект, затем вычисляет инклюзивное сканирование
(шаблон функции)

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

Определено в заголовке <memory>
uninitialized_copy
копирует диапазон объектов в неопределённую область памяти
(шаблон функции)
ranges::uninitialized_copy
(C++20)
копирует диапазон объектов в неопределённую область памяти
(niebloid)
uninitialized_copy_n
(C++11)
копирует определённое количество объектов в неопределённую область памяти
(шаблон функции)
ranges::uninitialized_copy_n
(C++20)
копирует определённое количество объектов в неопределённую область памяти
(niebloid)
uninitialized_fill
копирует объект в неопределённую область памяти, заданную диапазоном
(шаблон функции)
ranges::uninitialized_fill
(C++20)
копирует объект в неопределённую область памяти, заданную диапазоном
(niebloid)
uninitialized_fill_n
копирует объект в неопределённую область памяти, заданную начальной точкой и количеством
(шаблон функции)
ranges::uninitialized_fill_n
(C++20)
копирует объект в неопределённую область памяти, заданную начальной точкой и количеством
(niebloid)
uninitialized_move
(C++17)
перемещает диапазон объектов в неопределённую область памяти
(шаблон функции)
ranges::uninitialized_move
(C++20)
перемещает диапазон объектов в неопределённую область памяти
(niebloid)
uninitialized_move_n
(C++17)
перемещает определённое количество объектов в неопределённую область памяти
(шаблон функции)
ranges::uninitialized_move_n
(C++20)
перемещает определённое количество объектов в неопределённую область памяти
(niebloid)
uninitialized_default_construct
(C++17)
создаёт объекты по умолчанию в неопределённой области памяти, заданной диапазоном
(шаблон функции)
ranges::uninitialized_default_construct
(C++20)
создаёт объекты по умолчанию в неопределённой области памяти, заданной диапазоном
(niebloid)
uninitialized_default_construct_n
(C++17)
создаёт объекты по умолчанию в неопределённой области памяти, заданной начальной точкой и количеством
(шаблон функции)
ranges::uninitialized_default_construct_n
(C++20)
создаёт объекты по умолчанию в неопределённой области памяти, заданной начальной точкой и количеством
(niebloid)
uninitialized_value_construct
(C++17)
создаёт объекты с инициализацией по значению в неопределённой области памяти, заданной диапазоном
(шаблон функции)
ranges::uninitialized_value_construct
(C++20)
создаёт объекты с инициализацией по значению в неопределённой области памяти, заданной диапазоном
(niebloid)
uninitialized_value_construct_n
(C++17)
создаёт объекты с инициализацией по значению в неопределённой области памяти, заданной начальной точкой и количеством
(шаблон функции)
ranges::uninitialized_value_construct_n
(C++20)
создаёт объекты с инициализацией по значению в неопределённой области памяти, заданной начальной точкой и количеством
(niebloid)
destroy
(C++17)
уничтожает диапазон объектов
(шаблон функции)
ranges::destroy
(C++20)
уничтожает диапазон объектов
(niebloid)
destroy_n
(C++17)
уничтожает определённое количество объектов в диапазоне
(шаблон функции)
ranges::destroy_n
(C++20)
уничтожает определённое количество объектов в диапазоне
(niebloid)
destroy_at
(C++17)
уничтожает объект по заданному адресу
(шаблон функции)
ranges::destroy_at
(C++20)
уничтожает объект по заданному адресу
(niebloid)
construct_at
(C++20)
создаёт объект по заданному адресу
(шаблон функции)
ranges::construct_at
(C++20)
создаёт объект по заданному адресу
(niebloid)

Библиотека C

Определено в заголовке <cstdlib>
qsort
сортирует диапазон элементов произвольного типа
(функция)
bsearch
ищет элемент в массиве произвольного типа
(функция)

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/algorithm

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API