/* * Swap * */ template<class T> void swap(T& a, T& b) { T tmp = a; a = b; b = tmp; } template<class For, class For2> void iter_swap(For x, For2 y); template<class For, class For2> i For2 swap_ranges(For first, For last, For2 first2) { while (first != last) iter_swap(first++, first2++); return first2; }