Template Function thrust::uninitialized_copy_n(InputIterator, Size, ForwardIterator)¶
Function Documentation¶
-
template<typename
InputIterator
, typenameSize
, typenameForwardIterator
>
ForwardIteratorthrust
::
uninitialized_copy_n
(InputIterator first, Size n, ForwardIterator result) In
thrust
, the functionthrust::device_new
allocates memory for an object and then creates an object at that location by calling a constructor. Occasionally, however, it is useful to separate those two operations. If each iterator in the range[result, result + n)
points to uninitialized memory, thenuninitialized_copy_n
creates a copy of[first, first + n)
in that range. That is, for each iteratori
in the input,uninitialized_copy_n
creates a copy of*i
in the location pointed to by the corresponding iterator in the output range byInputIterator's
value_type's
copy constructor with *i as its argument.The following code snippet demonstrates how to use
uninitialized_copy
to initialize a range of uninitialized memory.- Return
An iterator pointing to the last element of the output range.
- Pre
first
may equalresult
, but the range[first, first + n)
and the range[result, result + n)
shall not overlap otherwise.- Parameters
first
: The first element of the input range to copy from.n
: The number of elements to copy.result
: The first element of the output range to copy to.
- Template Parameters
InputIterator
: is a model of Input Iterator.Size
: is an integral type.ForwardIterator
: is a model of Forward Iterator,ForwardIterator
is mutable, andForwardIterator's
value_type
has a constructor that takes a single argument whose type isInputIterator's
value_type
.
#include <thrust/uninitialized_copy.h> #include <thrust/device_malloc.h> #include <thrust/device_vector.h> struct Int { __host__ __device__ Int(int x) : val(x) {} int val; }; ... const int N = 137; Int val(46); thrust::device_vector<Int> input(N, val); thrust::device_ptr<Int> array = thrust::device_malloc<Int>(N); thrust::uninitialized_copy_n(input.begin(), N, array); // Int x = array[i]; // x.val == 46 for all 0 <= i < N
- See
- See
uninitialized_copy
- See
copy
- See
uninitialized_fill
- See
- See