Template Function thrust::reverse_copy(BidirectionalIterator, BidirectionalIterator, OutputIterator)¶
Function Documentation¶
-
template<typename
BidirectionalIterator
, typenameOutputIterator
>
OutputIteratorthrust
::
reverse_copy
(BidirectionalIterator first, BidirectionalIterator last, OutputIterator result) reverse_copy
differs from reverse only in that the reversed range is written to a different output range, rather than inplace.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 everyi
such that0 <= i < (last - first)
,reverse_copy
performs the assignment*(result + (last - first) - i) = *(first + i)
.The return value is
result + (last - first))
.The following code snippet demonstrates how to use
reverse_copy
to reverse an inputdevice_vector
of integers to an outputdevice_vector
.- Pre
The range
[first, last)
and the range[result, result + (last - first))
shall not overlap.- Parameters
first
: The beginning of the range to reverse.last
: The end of the range to reverse.result
: The beginning of the output range.
- Template Parameters
BidirectionalIterator
: is a model of Bidirectional Iterator, andBidirectionalIterator's
value_type
is convertible toOutputIterator's
value_type
.OutputIterator
: is a model of Output Iterator.
#include <thrust/reverse.h> ... const int N = 6; int data[N] = {0, 1, 2, 3, 4, 5}; thrust::device_vector<int> input(data, data + N); thrust::device_vector<int> output(N); thrust::reverse_copy(v.begin(), v.end(), output.begin()); // input is still {0, 1, 2, 3, 4, 5} // output is now {5, 4, 3, 2, 1, 0}
- See
- See
reverse
- See
reverse_iterator