template<typename InputIterator1 , typename InputIterator2 , typename OutputIterator1 , typename OutputIterator2 >
thrust::pair<OutputIterator1,OutputIterator2> thrust::unique_by_key_copy |
( |
InputIterator1 |
keys_first, |
|
|
InputIterator1 |
keys_last, |
|
|
InputIterator2 |
values_first, |
|
|
OutputIterator1 |
keys_result, |
|
|
OutputIterator2 |
values_result |
|
) |
| |
unique_by_key_copy
is a generalization of unique_copy
to key-value pairs. For each group of consecutive keys in the range [keys_first, keys_last)
that are equal, unique_by_key_copy
copies the first element of the group to a range beginning with keys_result
and the corresponding values from the range [values_first, values_first + (keys_last - keys_first))
are copied to a range beginning with values_result
.
This version of unique_by_key_copy
uses operator==
to test for equality and project1st
to reduce values with equal keys.
- Parameters
-
keys_first | The beginning of the input key range. |
keys_last | The end of the input key range. |
values_first | The beginning of the input value range. |
keys_result | The beginning of the output key range. |
values_result | The beginning of the output value range. |
- Returns
- A pair of iterators at end of the ranges
[keys_result, keys_result_last)
and [values_result, values_result_last)
.
- Template Parameters
-
InputIterator1 | is a model of Input Iterator, |
InputIterator2 | is a model of Input Iterator, |
OutputIterator1 | is a model of Output Iterator and and InputIterator1's value_type is convertible to OutputIterator1's value_type . |
OutputIterator2 | is a model of Output Iterator and and InputIterator2's value_type is convertible to OutputIterator2's value_type . |
- Precondition
- The input ranges shall not overlap either output range.
The following code snippet demonstrates how to use unique_by_key_copy
to compact a sequence of key/value pairs and with equal keys.
...
const int N = 7;
int A[N] = {1, 3, 3, 3, 2, 2, 1};
int B[N] = {9, 8, 7, 6, 5, 4, 3};
int C[N];
int D[N];
- See also
- unique_copy
-
unique_by_key
-
reduce_by_key