Function reduce_by_key
boost::compute::reduce_by_key
Synopsis
template<typename InputKeyIterator, typename InputValueIterator,
typename OutputKeyIterator, typename OutputValueIterator,
typename BinaryFunction, typename BinaryPredicate>
std::pair< OutputKeyIterator, OutputValueIterator >
reduce_by_key(InputKeyIterator keys_first, InputKeyIterator keys_last,
InputValueIterator values_first,
OutputKeyIterator keys_result,
OutputValueIterator values_result, BinaryFunction function,
BinaryPredicate predicate,
command_queue & queue = system::default_queue());
template<typename InputKeyIterator, typename InputValueIterator,
typename OutputKeyIterator, typename OutputValueIterator,
typename BinaryFunction>
std::pair< OutputKeyIterator, OutputValueIterator >
reduce_by_key(InputKeyIterator keys_first, InputKeyIterator keys_last,
InputValueIterator values_first,
OutputKeyIterator keys_result,
OutputValueIterator values_result, BinaryFunction function,
command_queue & queue = system::default_queue());
template<typename InputKeyIterator, typename InputValueIterator,
typename OutputKeyIterator, typename OutputValueIterator>
std::pair< OutputKeyIterator, OutputValueIterator >
reduce_by_key(InputKeyIterator keys_first, InputKeyIterator keys_last,
InputValueIterator values_first,
OutputKeyIterator keys_result,
OutputValueIterator values_result,
command_queue & queue = system::default_queue());
Description
Алгоритм<reduce_by_key()
>выполняет уменьшение для каждой смежной последовательности значений, определяемых эквивалентными ключами.
Возвращает пару итераторов в конце диапазонов [<keys_result
>, keys_result_last] и [<values_result
>,<values_result_last
>].
Если функция не указана, то используется<plus
>. Если не указан предикат, то используется<equal_to
>.
Алгоритм<reduce_by_key()
>предполагает, что функция бинарного восстановления ассоциативна. При использовании с неассоциативными функциями результат может быть недетерминированным и отличаться точностью. Примечательно, что это влияет на функцию<plus<float>()
>, поскольку сложение с плавающей точкой не является ассоциативным и может давать немного другие результаты, чем последовательный алгоритм.
Например, для расчета суммы значений для каждого ключа:
Смотрите также:
уменьшить()
Параметры: | <function > | функция бинарного восстановления | <keys_first > | Первый ключ | <keys_last > | Последний ключ | <keys_result > | итератор, указывающий на выход ключа | <predicate > | Бинарный предикат, который возвращается истинным только в том случае, если два ключа равны | <queue > | командная очередь для выполнения операции | <values_first > | Первое входное значение | <values_result > | итератор, указывающий на снижение выходной стоимости |
|