thrust::unique
Defined in thrust/unique.h
- 
template<typename DerivedPolicy, typename ForwardIterator>
 ForwardIterator thrust::unique(const thrust::detail::execution_policy_base<DerivedPolicy> &exec, ForwardIterator first, ForwardIterator last)
- For each group of consecutive elements in the range - [first, last)with the same value,- uniqueremoves all but the first element of the group. The return value is an iterator- new_lastsuch that no two consecutive elements in the range- [first, new_last)are equal. The iterators in the range- [new_last, last)are all still dereferenceable, but the elements that they point to are unspecified.- uniqueis stable, meaning that the relative order of elements that are not removed is unchanged.- This version of - uniqueuses- operator==to test for equality.- The algorithm’s execution is parallelized as determined by - exec.- The following code snippet demonstrates how to use - uniqueto compact a sequence of numbers to remove consecutive duplicates using the- thrust::hostexecution 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 *new_end = thrust::unique(thrust::host, A, A + N); // The first four values of A are now {1, 3, 2, 1} // Values beyond new_end are unspecified. - See also - unique_copy - Parameters
- exec – The execution policy to use for parallelization. 
- first – The beginning of the input range. 
- last – The end of the input range. 
 
- Template Parameters
- DerivedPolicy – The name of the derived execution policy. 
- ForwardIterator – is a model of Forward Iterator, and - ForwardIteratoris mutable, and- ForwardIterator's- value_typeis a model of Equality Comparable.
 
- Returns
- The end of the unique range - [first, new_last).