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_copy
 |
 |
| Category: algorithms |
Component type: function |
Prototype
template <class ForwardIterator, class OutputIterator>
OutputIterator rotate_copy(ForwardIterator first, ForwardIterator middle,
ForwardIterator last, OutputIterator result);
Description
Rotate_copy copies elements from the range
[first, last) to the
range
[result, result + (last - first)) such that
*middle is
copied to
*result,
*(middle + 1) is copied to
*(result + 1), and
so on. Formally, for every integer
n such that
0 <= n < last -
first,
rotate_copy performs the assignment
*(result + (n + (last -
middle)) % (last - first)) = *(first + n).
Rotate_copy is similar
to
copy followed by
rotate, but is more efficient. The
return value is
result + (last - first).
Definition
Defined in the standard header
algorithm, and in the nonstandard
backward-compatibility header
algo.h.
Requirements on types
-
ForwardIterator is a model of Forward Iterator.
-
OutputIterator is a model of Output Iterator.
-
ForwardIterator's value type is convertible to a type in
OutputIterator's set of value types.
Preconditions
-
[first, middle) is a valid range.
-
[middle, last) is a valid range. [1]
-
There is enough space to hold all of the elements being copied.
More formally, the requirement is that
[result, result + (last - first)) is a valid range.
-
The ranges [first, last) and [result, result + (last - first))
do not overlap.
Complexity
Linear.
Rotate_copy performs exactly
last - first assignments.
Example
const char alpha[] = "abcdefghijklmnopqrstuvwxyz";
rotate_copy(alpha, alpha + 13, alpha + 26, ostream_iterator<char>(cout));
// The output is nopqrstuvwxyzabcdefghijklm
Notes
[1]
It follows from these two requirements that [first, last) is
a valid range.
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