thrust::unique_copy
Defined in thrust/unique.h
-
template<typename InputIterator, typename OutputIterator, typename BinaryPredicate>
OutputIterator thrust::unique_copy(InputIterator first, InputIterator last, OutputIterator result, BinaryPredicate binary_pred) unique_copycopies 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_copyuses the function objectbinary_predto test for equality.The following code snippet demonstrates how to use
unique_copyto compact a sequence of numbers to remove consecutive duplicates.#include <thrust/unique.h> ... const int N = 7; int A[N] = {1, 3, 3, 3, 2, 2, 1}; int B[N]; int *result_end = thrust::unique_copy(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
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
InputIterator – is a model of Input Iterator, and
InputIterator'svalue_typeis a model of Equality Comparable.OutputIterator – is a model of Output Iterator and and
InputIterator'svalue_typeis convertible toOutputIterator'svalue_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.