| |
|
Category: algorithms | | Component type: function |
Prototype
template <class BidirectionalIterator, class OutputIterator>
OutputIterator reverse_copy(BidirectionalIterator first,
BidirectionalIterator last,
OutputIterator result);
Description
Reverse_copy
copies elements from the range [first, last)
to the range [result, result + (last - first))
such that the copy is a reverse of the original range. Specifically: for every i
such that 0 <= i < (last - first)
, reverse_copy
performs the assignment *(result + (last - first) - i) = (first + i)
.
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
-
BidirectionalIterator is a model of BidirectionalIterator.
-
OutputIterator is a model of OutputIterator.
-
The value type of BidirectionalIterator is convertible to a type in OutputIterator's set of value types.
Preconditions
-
[first, last)
is a valid range.
-
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: exactly last - first
assignments.
Example
Vector<int> V;
V.push_back(0);
V.push_back(1);
V.push_back(2);
copy(V.begin(), V.end(), ostream_iterator<int>(cout, " "));
List<int> L(V.size());
reverse_copy(V.begin(), V.end(), L.begin());
copy(L.begin(), L.end(), ostream_iterator<int>(cout, " "));
Notes
See also
reverse
, copy