Function accumulate
boost::compute::accumulate
Synopsis
template<typename InputIterator, typename T, typename BinaryFunction>
T accumulate(InputIterator first, InputIterator last, T init,
BinaryFunction function,
command_queue & queue = system::default_queue());
template<typename InputIterator, typename T>
T accumulate(InputIterator first, InputIterator last, T init,
command_queue & queue = system::default_queue());
Description
Возвращает результат применения<function
>к элементам в диапазоне [<first
>,<last
>и<init
>].
Если функция не указана, то используется<plus
>.
В определенных ситуациях вызов<accumulate()
>может быть автоматически оптимизирован для вызова более эффективного алгоритма<reduce()
>. Это происходит, когда функция бинарного восстановления распознается как ассоциативная (например, функция<plus<int>
>).
Обратите внимание, что поскольку сложение с плавающей точкой не является ассоциативным, вызов<accumulate()
>с<plus<float>
>приводит к менее эффективному алгоритму последовательного восстановления. Если допустима небольшая потеря точности, следует использовать более эффективный параллельный<reduce()
>алгоритм.
Например:
accumulate(vec.begin(), vec.end(), 0, plus<int>());
reduce(vec.begin(), vec.end(), &result, plus<int>());
accumulate(vec.begin(), vec.end(), 0, plus<float>());
reduce(vec.begin(), vec.end(), &result, plus<float>());
Смотрите также:
уменьшить()
Параметры: | first
| Первый элемент в входном диапазоне | <function > | функция бинарного восстановления | <init > | Начальное значение | <last > | последний элемент во входном диапазоне | <queue > | командная очередь для выполнения операции |
|
Возвращение: | накопленное значение результата |