>copy(beg, end, dest)
>copy_if(beg, end, dest, unaryPred)
>copy_n(beg, n, dest)
Копирует из исходного диапазона последовательности, обозначенные итератором >dest
. Алгоритм >copy()
копирует все элементы, а алгоритм >copy_if()
копирует те из них, для которых предикат >unaryPred
истин, а алгоритм >copy_n()
копирует первые >n
элементов. У исходной последовательности должно быть по крайней мере >n
элементов.
>move(beg, end, dest)
Вызов функции >std::move()
(см. раздел 13.6.1) для каждого элемента в исходной последовательности позволяет переместить этот элемент в последовательность, начиная с итератора >dest
.
>transform(beg, end, dest, unaryOp)
>transform(beg, end, beg2, dest, binaryOp)
Вызывает заданную операцию и пишет ее результат в >dest
. Первая версия применяет унарную операцию к каждому элементу в исходном диапазоне. Вторая применяет бинарную операцию к элементам этих двух исходных последовательностей.
>replace_copy(beg, end, dest, old_val, new_val)
>replace_copy_if(beg, end, dest, unaryPred, new_val)
Копируют каждый элемент в >dest
, заменяя определенные элементы значением >new_val
. Первая версия заменяет элементы >== old_val
, а вторая версия — элементы, удовлетворяющие предикату >unaryPred
.
>merge(beg1, end1, beg2, end2, dest)
>merge(beg1, end1, beg2, end2, dest, comp)
Сортирует обе исходные последовательности. Записывает в >dest
объединенную последовательность. Первая версия сравнивает элементы при помощи оператора ><
; а вторая использует предоставленный оператор сравнения.
Этим алгоритмам требуются прямые итераторы, поскольку они пишут в элементы своих исходных последовательностей. Итераторы должны предоставлять доступ для записи в элементы.
>iter_swap(iter1, iter2)
>swap_ranges(beg1, end1, beg2)
Заменяет элемент, обозначенный итератором >iter1
, элементом, обозначенным итератором >iter2
; или обменивает все элементы в исходном диапазоне с таковыми из второй последовательности, начиная с позиции >beg2
. Диапазоны не должны пересекаться. Алгоритм >iter_swap()
возвращает >void
; алгоритм >swap_ranges
возвращает итератор >beg2
, увеличенный так, чтобы обозначить элемент сразу после последнего обмененного.
>replace(beg, end, old_val, new_val)
>replace_if(beg, end, unaryPred, new_val)
Заменяет каждый элемент, соответствующий значению >new_val
. Первая версия использует для сравнения элементов со значением >old_val
оператор >==
, а вторая заменяет те элементы, для которых истин предикат >unaryPred
.
Поскольку этим алгоритмам необходима способность вернуться назад в последовательности, они требуют двунаправленных итераторов.
>copy_backward(beg, end, dest)
>move_backward(beg, end, dest)
Копирует или перемещает элементы из исходного диапазона в заданный. В отличие от других алгоритмов, >dest
— итератор после конца для выходной последовательности (т.е. последовательность назначения закончится непосредственно перед>dest
). Последний элемент в исходном диапазоне копируется или перемещается в последний элемент назначения, затем копируется (перемещается) предпоследний элемент и т.д. У элементов в последовательности назначения тот же порядок, что и в исходном диапазоне. Если диапазон пуст, возвращается итератор