swap
template <class Assignable> void swap(Assignable &a,Assignable &b);
iter_swap
template <class ForwardIterator1,class ForwardIterator2> inline void iter_swap(ForwardIterator1 a,ForwardIterator1 b);
如果a b是iterator,那么与swap等价,此算法为了支持非标准的reference type的iterator
swap_ranges
将大小相同的两个range互换,返回值是first2+(last1-first1)
template <class ForwardIterator1,class ForwardIterator2> ForwardIterator2 swap_ranges(ForwardIterator1 first1,ForwardIterator1 last1,ForwardIterator2 first2);