template<class FwdIt>
void rotate(FwdIt first, FwdIt middle, FwdIt last);
The template function leaves the value originally stored in *(first + (N + (middle - last)) % (last -
first))
subsequently stored in *(first + N)
for each N
in the range [0, last - first)
. Thus, if a ''left'' shift
by one element leaves the element originally stored in *(first + (N + 1) % (last - first))
subsequently
stored in *(first + N)
, then the function can be said to rotate the sequence either left by middle - first
elements or right by last - middle
elements. Both [first, middle)
and [middle, last)
must be valid ranges.
The function swaps at most last - first
pairs of elements.
See the related sample program.