Swap_ranges swaps each of the elements in the range
[first1, last1) with the corresponding element in the range
[first2, first2 + (last1 - first1)). That is, for each integer n
such that 0 <= n < (last1 - first1), it swaps *(first1 + n)
and *(first2 + n). The return value is first2 + (last1 - first1).
ForwardIterator1 and ForwardIterator2 must both be models of
Forward Iterator. The value types of ForwardIterator1 and
ForwardIterator2 must be convertible to each other.
Preconditions
[first1, last1) is a valid range.
[first2, first2 + (last1 - first1)) is a valid range.
The two ranges [first1, last1) and
[first2, first2 + (last1 - first1)) do not overlap.
Complexity
Linear. Exactly last1 - first1 swaps are performed.