std::move_backward
Материал из cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Определено в заголовочном файле <algorithm>
   | 
||
|   template< class BidirIt1, class BidirIt2 > BidirIt2 move_backward( BidirIt1 first, BidirIt1 last, BidirIt2 d_last );  | 
||
Перемещает элементы из диапазона [first, last) в другой диапазон, кончающийся в d_last. Элементы перемещаются в обратном порядке (последний элемент перемещается первым), но их относительный порядок сохраняется.
Содержание | 
[править] Параметры
| first, last | - | диапазон элементов для перемещения | 
| d_last | - |   конец целевого диапазона. Если d_last находится внутри [first, last), следует использовать  std::move вместо std::move_backward.
 | 
| Требования к типам | ||
 -BidirIt1 должен соответствовать требованиям BidirectionalIterator.
 | ||
 -BidirIt2 должен соответствовать требованиям BidirectionalIterator.
 | ||
[править] Возвращаемое значение
Итератор в целевом диапазоне, указывающий на последний перемещённый элемент.
[править] Сложность
Ровно last - first присваиваний перемещения.
[править] Возможная реализация
template< class BidirIt1, class BidirIt2 > BidirIt2 move_backward(BidirIt1 first, BidirIt1 last, BidirIt2 d_last) { while (first != last) { *(--d_last) = std::move(*(--last)); } return d_last; }  | 
[править] Пример
Запустить этот код
#include <algorithm> #include <vector> #include <string> #include <iostream> int main() { std::vector<std::string> src{"foo", "bar", "baz"}; std::vector<std::string> dest(src.size()); std::cout << "src: "; for (const auto &s : src) { std::cout << s << ' '; } std::cout << "\ndest: "; for (const auto &s : dest) { std::cout << s << ' '; } std::cout << '\n'; std::move_backward(src.begin(), src.end(), dest.end()); std::cout << "src: "; for (const auto &s : src) { std::cout << s << ' '; } std::cout << "\ndest: "; for (const auto &s : dest) { std::cout << s << ' '; } std::cout << '\n'; }
Вывод:
src: foo bar baz dest: src: dest: foo bar baz
[править] См. также
|    (C++11)  | 
    перемещает диапазон элементов в новое место   Оригинал:  moves a range of elements to a new location  Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции)  |