thrust::unique_by_key
Defined in thrust/unique.h
- 
template<typename ForwardIterator1, typename ForwardIterator2>
 thrust::pair<ForwardIterator1, ForwardIterator2> thrust::unique_by_key(ForwardIterator1 keys_first, ForwardIterator1 keys_last, ForwardIterator2 values_first)
- unique_by_keyis a generalization of- uniqueto key-value pairs. For each group of consecutive keys in the range- [keys_first, keys_last)that are equal,- unique_by_keyremoves all but the first element of the group. Similarly, the corresponding values in the range- [values_first, values_first + (keys_last - keys_first))are also removed.- The return value is a - pairof iterators- (new_keys_last,new_values_last)such that no two consecutive elements in the range- [keys_first, new_keys_last)are equal.- This version of - unique_by_keyuses- operator==to test for equality and- project1stto reduce values with equal keys.- The following code snippet demonstrates how to use - unique_by_keyto compact a sequence of key/value pairs to remove consecutive duplicates.- #include <thrust/unique.h> ... const int N = 7; int A[N] = {1, 3, 3, 3, 2, 2, 1}; // keys int B[N] = {9, 8, 7, 6, 5, 4, 3}; // values thrust::pair<int*,int*> new_end; new_end = thrust::unique_by_key(A, A + N, B); // The first four keys in A are now {1, 3, 2, 1} and new_end.first - A is 4. // The first four values in B are now {9, 8, 5, 3} and new_end.second - B is 4. - See also - unique - See also - unique_by_key_copy - See also - reduce_by_key - Parameters
- keys_first – The beginning of the key range. 
- keys_last – The end of the key range. 
- values_first – The beginning of the value range. 
 
- Template Parameters
- ForwardIterator1 – is a model of Forward Iterator, and - ForwardIterator1is mutable, and- ForwardIterator's- value_typeis a model of Equality Comparable.
- ForwardIterator2 – is a model of Forward Iterator, and - ForwardIterator2is mutable.
 
- Returns
- A pair of iterators at end of the ranges - [key_first, keys_new_last)and- [values_first, values_new_last).
- Pre
- The range - [keys_first, keys_last)and the range- [values_first, values_first + (keys_last - keys_first))shall not overlap.