×
Traktatov.net » Язык программирования C++. Пятое издание » Читать онлайн
Страница 705 из 714 Настройки
.

>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). Последний элемент в исходном диапазоне копируется или перемещается в последний элемент назначения, затем копируется (перемещается) предпоследний элемент и т.д. У элементов в последовательности назначения тот же порядок, что и в исходном диапазоне. Если диапазон пуст, возвращается итератор