28 Algorithms library [algorithms]

28.6 Mutating sequence operations [alg.modifying.operations]

28.6.10 Reverse [alg.reverse]

template<class BidirectionalIterator> void reverse(BidirectionalIterator first, BidirectionalIterator last); template<class ExecutionPolicy, class BidirectionalIterator> void reverse(ExecutionPolicy&& exec, BidirectionalIterator first, BidirectionalIterator last);

Requires: *first будет swappable.

Effects: Для каждого неотрицательного целого числа i < (last - first) / 2применяется iter_­swap ко всем парам итераторов first + i, (last - i) - 1.

Requires: BidirectionalIterator должны удовлетворять требованиям ValueSwappable.

Complexity: Ровно (last - first)/2 свопы.

template<class BidirectionalIterator, class OutputIterator> OutputIterator reverse_copy(BidirectionalIterator first, BidirectionalIterator last, OutputIterator result); template<class ExecutionPolicy, class BidirectionalIterator, class ForwardIterator> ForwardIterator reverse_copy(ExecutionPolicy&& exec, BidirectionalIterator first, BidirectionalIterator last, ForwardIterator result);

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

Effects: Копирование диапазона [first, last) к диапазону [result, result + (last - first)) , что для любого целого неотрицательного числа i < (last - first) следующего присваивания происходит: *(result + (last - first) - 1 - i) = *(first + i).

Returns: result + (last - first).

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