28 Algorithms library [algorithms]

28.6 Mutating sequence operations [alg.modifying.operations]

28.6.2 Move [alg.move]

template<class InputIterator, class OutputIterator> OutputIterator move(InputIterator first, InputIterator last, OutputIterator result);

Requires: result не должно быть в диапазоне [first, last).

Effects: Перемещает элементы диапазона [first, last) в диапазон, [result, result + (last - first)) начиная с первого и заканчивая последним. Для каждого неотрицательного целого числа n < (last-first)выполняется *(result + n) = std​::​move(*(first + n)).

Returns: result + (last - first).

Complexity: Ровно last - first перемещайте задания.

template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2> ForwardIterator2 move(ExecutionPolicy&& policy, ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result);

Requires: Диапазоны [first, last) и [result, result + (last - first)) не должны перекрываться.

Effects: Перемещает элементы из диапазона [first, last) в диапазон [result, result + (last - first)). Для каждого неотрицательного целого числа n < (last - first)выполняется *(result + n) = std​::​​move(*(first + n)).

Returns: result + (last - first).

Complexity: Собственно last - first задания.

template<class BidirectionalIterator1, class BidirectionalIterator2> BidirectionalIterator2 move_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, BidirectionalIterator2 result);

Requires: result не должно быть в диапазоне (first, last].

Effects: Перемещает элементы в диапазоне [first, last) в диапазон, [result - (last-first), result) начиная с last - 1 первого и переходя к нему.264 Для каждого положительного целого числа n <= (last - first)выполняется *(result - n) = std​::​move(*(last - n)).

Returns: result - (last - first).

Complexity: Собственно last - first задания.

move_­backward следует использовать вместо move, когда последний находится в диапазоне [result - (last - first), result).