thrust::unique_copy
Defined in thrust/unique.h
-
template<typename DerivedPolicy, typename InputIterator, typename OutputIterator, typename BinaryPredicate>
OutputIterator thrust::unique_copy(const thrust::detail::execution_policy_base<DerivedPolicy> &exec, InputIterator first, InputIterator last, OutputIterator result, BinaryPredicate binary_pred) unique_copy
copies elements from the range[first, last)
to a range beginning withresult
, except that in a consecutive group of duplicate elements only the first one is copied. The return value is the end of the range to which the elements are copied.This version of
unique_copy
uses the function objectbinary_pred
to test for equality.The algorithm’s execution is parallelized as determined by
exec
.The following code snippet demonstrates how to use
unique_copy
to compact a sequence of numbers to remove consecutive duplicates using thethrust::host
execution policy for parallelization:#include <thrust/unique.h> #include <thrust/execution_policy.h> ... const int N = 7; int A[N] = {1, 3, 3, 3, 2, 2, 1}; int B[N]; int *result_end = thrust::unique_copy(thrust::host, A, A + N, B, thrust::equal_to<int>()); // The first four values of B are now {1, 3, 2, 1} and (result_end - B) is 4 // Values beyond result_end are unspecified.
See also
unique
- Parameters
exec – The execution policy to use for parallelization.
first – The beginning of the input range.
last – The end of the input range.
result – The beginning of the output range.
binary_pred – The binary predicate used to determine equality.
- Template Parameters
DerivedPolicy – The name of the derived execution policy.
InputIterator – is a model of Input Iterator, and
InputIterator's
value_type
is a model of Equality Comparable.OutputIterator – is a model of Output Iterator and and
InputIterator's
value_type
is convertible toOutputIterator's
value_type
.BinaryPredicate – is a model of Binary Predicate.
- Returns
The end of the unique range
[result, result_end)
.- Pre
The range
[first,last)
and the range[result, result + (last - first))
shall not overlap.