rotate


Category: algorithms 
Component type: function 
Prototype
template <class ForwardIterator>
inline ForwardIterator rotate(ForwardIterator first, ForwardIterator middle,
ForwardIterator last);
Description
Rotate rotates the elements in a range. That is, the element pointed
to by middle is moved to the position first, the element pointed
to by middle + 1 is moved to the position first + 1, and so on.
One way to think about this operation is that it exchanges the two
ranges [first, middle) and [middle, last). Formally, for every
integer n such that 0 <= n < last  first, the element
*(first + n) is assigned to *(first + (n + (last  middle)) % (last
 first)). Rotate returns first + (last  middle).
Definition
Defined in the standard header algorithm, and in the nonstandard
backwardcompatibility header algo.h.
Requirements on types
Preconditions

[first, middle) is a valid range.

[middle, last) is a valid range. [1]
Complexity
Linear. At most last  first swaps are performed. [2]
Example
char alpha[] = "abcdefghijklmnopqrstuvwxyz";
rotate(alpha, alpha + 13, alpha + 26);
printf("%s\n", alpha);
// The output is nopqrstuvwxyzabcdefghijklm
Notes
[1]
It follows from these two requirements that [first, last) is
a valid range.
[2]
Rotate uses a different algorithm depending on whether its
arguments are Forward Iterators, Bidirectional Iterators,
or Random Access Iterators. All three algorithms, however,
are linear.
See also
rotate_copy
Copyright ©
1999 Silicon Graphics, Inc. All Rights Reserved.
TrademarkInformation
webmaster@www.sgi.com