Template Function thrust::unique_copy(InputIterator, InputIterator, OutputIterator, BinaryPredicate)¶
Function Documentation¶
-
template<typename
InputIterator, typenameOutputIterator, typenameBinaryPredicate>
OutputIteratorthrust::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.- Return
The end of the unique range
[result, result_end).- Pre
The range
[first,last)and the range[result, result + (last - first))shall not overlap.- 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, andInputIterator'svalue_typeis a model of Equality Comparable.OutputIterator: is a model of Output Iterator and andInputIterator'svalue_typeis convertible toOutputIterator'svalue_type.BinaryPredicate: is a model of Binary Predicate.
#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
unique
- See