swap_ranges

template<class FwdIt1, class FwdIt2>
    FwdIt2 swap_ranges(FwdIt1 first, FwdIt1 last, FwdIt2 x);

The template function evaluates swap(*(first + N), *(x + N)) once for each N in the range [0, last - first). It then returns x + (last - first). If x and first designate regions of storage, the range [x, x + (last - first)) must not overlap the range [first, last).