thrust::reverse_copy
Defined in thrust/reverse.h
-
template<typename DerivedPolicy, typename BidirectionalIterator, typename OutputIterator>
OutputIterator thrust::reverse_copy(const thrust::detail::execution_policy_base<DerivedPolicy> &exec, BidirectionalIterator first, BidirectionalIterator last, OutputIterator result) reverse_copy
differs fromreverse
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 algorithm’s execution is parallelized as determined by
exec
.The following code snippet demonstrates how to use
reverse_copy
to reverse an inputdevice_vector
of integers to an outputdevice_vector
using thethrust::device
execution policy for parallelization:#include <thrust/reverse.h> #include <thrust/execution_policy.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(thrust::device, 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 also
reverse
See also
- Parameters
exec – The execution policy to use for parallelization.
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
DerivedPolicy – The name of the derived execution policy.
BidirectionalIterator – is a model of Bidirectional Iterator, and
BidirectionalIterator's
value_type
is convertible toOutputIterator's
value_type
.OutputIterator – is a model of Output Iterator.
- Pre
The range
[first, last)
and the range[result, result + (last - first))
shall not overlap.