IRIX 6.5 » Books » Developer »
Standard Template Library Programmer's Guide
(document number: 007-3426-004 / published: 1999-05-21)
table of contents | additional info | download
find in page
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
backward-compatibility 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
Standard Template Library Programmer's Guide
(document number: 007-3426-004 / published: 1999-05-21)
table of contents | additional info | download
home/search |
what's new |
help