thrust::copy
Defined in thrust/copy.h
-
template<typename DerivedPolicy, typename InputIterator, typename OutputIterator>
OutputIterator thrust::copy(const thrust::detail::execution_policy_base<DerivedPolicy> &exec, InputIterator first, InputIterator last, OutputIterator result) copy
copies elements from the range [first
,last
) to the range [result
,result
+ (last
-first
)). That is, it performs the assignments *result
= *first
, *(result
+1
) = *(first
+1
), and so on. Generally, for every integern
from0
tolast
-first
,copy
performs the assignment *(result
+n
) = *(first
+n
). Unlikestd::copy
,copy
offers no guarantee on order of operation. As a result, callingcopy
with overlapping source and destination ranges has undefined behavior.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
copy
to copy from one range to another using thethrust::device
parallelization policy:#include <thrust/copy.h> #include <thrust/device_vector.h> #include <thrust/execution_policy.h> ... thrust::device_vector<int> vec0(100); thrust::device_vector<int> vec1(100); ... thrust::copy(thrust::device, vec0.begin(), vec0.end(), vec1.begin()); // vec1 is now a copy of vec0
- Parameters
exec – The execution policy to use for parallelization.
first – The beginning of the sequence to copy.
last – The end of the sequence to copy.
result – The destination sequence.
- Template Parameters
DerivedPolicy – The name of the derived execution policy.
InputIterator – must be a model of Input Iterator and
InputIterator's
value_type
must be convertible toOutputIterator's
value_type
.OutputIterator – must be a model of Output Iterator.
- Returns
The end of the destination sequence.
- Pre
result
may be equal tofirst
, butresult
shall not be in the range[first, last)
otherwise.