• // <algorithm>
    template <class T> void swap (T& a, T& b);
  • // <utility>
    // 非数组(1)	
    template <class T> void swap (T& a, T& b)
        noexcept (is_nothrow_move_constructible<T>::value && is_nothrow_move_assignable<T>::value);
    // 数组(2)
    template <class T, size_t N> void swap(T (&a)[N], T (&b)[N])
        noexcept (noexcept(swap(*a,*b)));

交换两个对象的值。