unique_by_key
#
Overloads#
unique_by_key(exec, keys_first, keys_last, values_first)
#
-
template<typename DerivedPolicy, typename ForwardIterator1, typename ForwardIterator2>
thrust::pair<ForwardIterator1, ForwardIterator2> thrust::unique_by_key( - const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
- ForwardIterator1 keys_first,
- ForwardIterator1 keys_last,
- ForwardIterator2 values_first,
unique_by_key
is a generalization ofunique
to key-value pairs. For each group of consecutive keys in the range[keys_first, keys_last)
that are equal,unique_by_key
removes 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
pair
of 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_key
usesoperator==
to test for equality andproject1st
to reduce values with equal keys.The algorithm’s execution is parallelized as determined by
exec
.The following code snippet demonstrates how to use
unique_by_key
to compact a sequence of key/value pairs to remove consecutive duplicates using thethrust::host
execution 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}; // keys int B[N] = {9, 8, 7, 6, 5, 4, 3}; // values thrust::pair<int*,int*> new_end; new_end = thrust::unique_by_key(thrust::host, 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
See also
See also
- Parameters:
exec – The execution policy to use for parallelization.
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:
DerivedPolicy – The name of the derived execution policy.
ForwardIterator1 – is a model of Forward Iterator, and
ForwardIterator1
is mutable, andForwardIterator's
value_type
is a model of Equality Comparable.ForwardIterator2 – is a model of Forward Iterator, and
ForwardIterator2
is 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.
unique_by_key(keys_first, keys_last, values_first)
#
-
template<typename ForwardIterator1, typename ForwardIterator2>
thrust::pair<ForwardIterator1, ForwardIterator2> thrust::unique_by_key( - ForwardIterator1 keys_first,
- ForwardIterator1 keys_last,
- ForwardIterator2 values_first,
unique_by_key
is a generalization ofunique
to key-value pairs. For each group of consecutive keys in the range[keys_first, keys_last)
that are equal,unique_by_key
removes 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
pair
of 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_key
usesoperator==
to test for equality andproject1st
to reduce values with equal keys.The following code snippet demonstrates how to use
unique_by_key
to 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
See also
See also
- 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
ForwardIterator1
is mutable, andForwardIterator's
value_type
is a model of Equality Comparable.ForwardIterator2 – is a model of Forward Iterator, and
ForwardIterator2
is 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.
unique_by_key(exec, keys_first, keys_last, values_first, binary_pred)
#
-
template<typename DerivedPolicy, typename ForwardIterator1, typename ForwardIterator2, typename BinaryPredicate>
thrust::pair<ForwardIterator1, ForwardIterator2> thrust::unique_by_key( - const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
- ForwardIterator1 keys_first,
- ForwardIterator1 keys_last,
- ForwardIterator2 values_first,
- BinaryPredicate binary_pred,
unique_by_key
is a generalization ofunique
to key-value pairs. For each group of consecutive keys in the range[keys_first, keys_last)
that are equal,unique_by_key
removes 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.This version of
unique_by_key
uses the function objectbinary_pred
to test for equality andproject1st
to reduce values with equal keys.The algorithm’s execution is parallelized as determined by
exec
.The following code snippet demonstrates how to use
unique_by_key
to compact a sequence of key/value pairs to remove consecutive duplicates using thethrust::host
execution 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}; // keys int B[N] = {9, 8, 7, 6, 5, 4, 3}; // values thrust::pair<int*,int*> new_end; ::cuda::std::equal_to<int> binary_pred; new_end = thrust::unique_by_key(thrust::host, A, A + N, B, binary_pred); // 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
See also
See also
- Parameters:
exec – The execution policy to use for parallelization.
keys_first – The beginning of the key range.
keys_last – The end of the key range.
values_first – The beginning of the value range.
binary_pred – The binary predicate used to determine equality.
- Template Parameters:
DerivedPolicy – The name of the derived execution policy.
ForwardIterator1 – is a model of Forward Iterator, and
ForwardIterator1
is mutable, andForwardIterator's
value_type
is a model of Equality Comparable.ForwardIterator2 – is a model of Forward Iterator, and
ForwardIterator2
is mutable.BinaryPredicate – is a model of Binary Predicate.
- Returns:
The end of the unique range
[first, new_last)
.- Pre:
The range
[keys_first, keys_last)
and the range[values_first, values_first + (keys_last - keys_first))
shall not overlap.
unique_by_key(keys_first, keys_last, values_first, binary_pred)
#
-
template<typename ForwardIterator1, typename ForwardIterator2, typename BinaryPredicate>
thrust::pair<ForwardIterator1, ForwardIterator2> thrust::unique_by_key( - ForwardIterator1 keys_first,
- ForwardIterator1 keys_last,
- ForwardIterator2 values_first,
- BinaryPredicate binary_pred,
unique_by_key
is a generalization ofunique
to key-value pairs. For each group of consecutive keys in the range[keys_first, keys_last)
that are equal,unique_by_key
removes 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.This version of
unique_by_key
uses the function objectbinary_pred
to test for equality andproject1st
to reduce values with equal keys.The following code snippet demonstrates how to use
unique_by_key
to 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; ::cuda::std::equal_to<int> binary_pred; new_end = thrust::unique_by_key(A, A + N, B, binary_pred); // 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
See also
See also
- 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.
binary_pred – The binary predicate used to determine equality.
- Template Parameters:
ForwardIterator1 – is a model of Forward Iterator, and
ForwardIterator1
is mutable, andForwardIterator's
value_type
is a model of Equality Comparable.ForwardIterator2 – is a model of Forward Iterator, and
ForwardIterator2
is mutable.BinaryPredicate – is a model of Binary Predicate.
- Returns:
The end of the unique range
[first, new_last)
.- Pre:
The range
[keys_first, keys_last)
and the range[values_first, values_first + (keys_last - keys_first))
shall not overlap.