28 Algorithms library [algorithms]

28.6 Mutating sequence operations [alg.modifying.operations]

28.6.3 Swap [alg.swap]

template<class ForwardIterator1, class ForwardIterator2> ForwardIterator2 swap_ranges(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2); template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2> ForwardIterator2 swap_ranges(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2);

Requires: Эти два диапазона , [first1, last1) и [first2, first2 + (last1 - first1)) не должны перекрывать. *(first1 + n) будет swappable with *(first2 + n).

Effects: Для каждого неотрицательных целого числа n < (last1 - first1) выполняет: swap(*(first1 + n), ​*(first2 + n)).

Returns: first2 + (last1 - first1).

Complexity: Ровно last1 - first1 свопы.

template<class ForwardIterator1, class ForwardIterator2> void iter_swap(ForwardIterator1 a, ForwardIterator2 b);

Requires: a и b должно быть разыменовано. *a будет swappable with *b.

Effects: Как будто мимо swap(*a, *b).