Standard C++ Library Reference ISO/IEC (VERSION3)
swap
template<class Ty>
void swap(Ty& left, Ty& right);
The template function leaves the value originally stored in right subsequently stored in left,
and the value originally stored in left subsequently stored in right.
swap_ranges
template<class FwdIt1, class FwdIt2>
FwdIt2 swap_ranges(FwdIt1 first1, FwdIt1 last1,
FwdIt2 first2);
The template function evaluates swap(*(first1 + N), *(first2 + N)) once for
each N in the range [0, last1 - first1). It then returns first2 + (last1 -
first1). If first2 and first1 designate regions of storage, the range [first2,
first2 + (last1 - first1)) must not overlap the range [first1, last1).
transform
template<class InIt, class OutIt, class Fn1>
OutIt transform(InIt first, InIt last, OutIt dest,
Fn1 func);
template<class InIt1, class InIt2, class OutIt,
class Fn2>
OutIt transform(InIt1 first1, InIt1 last1,
InIt2 first2, OutIt dest, Fn2 func);
The first template function evaluates *(dest + N) = func(*(first + N)) once for
each N in the range [0, last - first). It then returns dest + (last - first).
The call func(*(first + N)) must not alter *(first + N).
The second template function evaluates *(dest + N) = func(*(first1 + N),
*(first2 + N)) once for each N in the range [0, last1 - first1). It then returns
dest + (last1 - first1). The call func(*(first1 + N), *(first2 + N))
must not alter either *(first1 + N) or *(first2 + N).
unique
template<class FwdIt>
FwdIt unique(FwdIt first, FwdIt last);
template<class FwdIt, class Pr>
FwdIt unique(FwdIt first, FwdIt last, Pr pred);