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

std::copy_backward

Материал из cppreference.com
< cpp‎ | algorithm
 
 
Библиотека алгоритмов
Ограниченные алгоритмы и алгоритмы над диапазонами (C++20)
Ограниченные алгоритмы, например ranges::copy, ranges::sort, ...
Политики исполнения (C++17)
Немодифицирующие операции над последовательностями
(C++11)(C++11)(C++11)
(C++17)
Модифицирующие операции над последовательностями
(C++11)
copy_backward
(C++11)
(C++20)(C++20)
Операции разбиения
Операции сортировки
(C++11)
Операции двоичного поиска
Операции с наборами (в отсортированных диапазонах)
Операции с кучей
(C++11)
Операций минимума/максимума
(C++11)
(C++17)

Операции перестановки
Числовые операции
Операции с неинициализированной памятью
(C++17)
(C++17)
(C++17)
Библиотека C
 
Определено в заголовочном файле <algorithm>
template< class BidirectionalIterator1, class BidirectionalIterator2 >

BidirectionalIterator2 copy_backward( BidirectionalIterator1 first,
                                      BidirectionalIterator1 last,

                                      BidirectionalIterator2 d_last );

Копирует элементы из промежутка [firstlast) в промежуток, кончающийся в d_last. Элементы копируются в обратном порядке (последний элемент копируется первым), но их относительный порядок сохраняется.

Содержание

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

[firstlast) два итератора задающих диапазон элементов для копирования
d_last конец целевого промежутка. Если d_last находится внутри [first, last), то вместо std::copy_backward нужно использовать std::copy.

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

итератор на последний скопированный элемент.

[править] Сложность

Ровно last - first присваиваний.

[править] Возможная реализация

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

#include <algorithm>
#include <iostream>
 
int main()
{
    std::vector<int> from_vector;
    for (int i = 0; i < 10; i++) {
        from_vector.push_back(i);
    }
 
    std::vector<int> to_vector(15);
 
    std::copy_backward(from_vector.begin(), from_vector.end(), to_vector.end());
 
    std::cout << "to_vector contains: ";
    for (unsigned int i = 0; i < to_vector.size(); i++) {
        std::cout << to_vector[i] << " ";
    }
 }

Вывод:

to_vector contains: 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9

[править] См. также

копирует диапазон элементов в новое место
(шаблон функции) [править]