reverse_copy


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 algo.h.
Requirements on types

BidirectionalIterator is a model of Bidirectional Iterator.

OutputIterator is a model of Output Iterator.

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, " "));
// Output: 0 1 2
list<int> L(V.size());
reverse_copy(V.begin(), V.end(), L.begin());
copy(L.begin(), L.end(), ostream_iterator<int>(cout, " "));
// Output: 2 1 0
Notes
See also
reverse, copy
Copyright ©
1996 Silicon Graphics, Inc. All Rights Reserved.
TrademarkInformation