thrust::transform_reduce
Defined in thrust/transform_reduce.h
- 
template<typename InputIterator, typename UnaryFunction, typename OutputType, typename BinaryFunction>
 OutputType thrust::transform_reduce(InputIterator first, InputIterator last, UnaryFunction unary_op, OutputType init, BinaryFunction binary_op)
- transform_reducefuses the- transformand- reduceoperations.- transform_reduceis equivalent to performing a transformation defined by- unary_opinto a temporary sequence and then performing- reduceon the transformed sequence. In most cases, fusing these two operations together is more efficient, since fewer memory reads and writes are required.- transform_reduceperforms a reduction on the transformation of the sequence- [first, last)according to- unary_op. Specifically,- unary_opis applied to each element of the sequence and then the result is reduced to a single value with- binary_opusing the initial value- init. Note that the transformation- unary_opis not applied to the initial value- init. The order of reduction is not specified, so- binary_opmust be both commutative and associative.- The following code snippet demonstrates how to use - transform_reduceto compute the maximum value of the absolute value of the elements of a range.- #include <thrust/transform_reduce.h> #include <thrust/functional.h> template<typename T> struct absolute_value { __host__ __device__ T operator()(const T &x) const { return x < T(0) ? -x : x; } }; ... int data[6] = {-1, 0, -2, -2, 1, -3}; int result = thrust::transform_reduce(data, data + 6, absolute_value<int>(), 0, thrust::maximum<int>()); // result == 3 - See also - transform- See also - reduce- Parameters
- first – The beginning of the sequence. 
- last – The end of the sequence. 
- unary_op – The function to apply to each element of the input sequence. 
- init – The result is initialized to this value. 
- binary_op – The reduction operation. 
 
- Template Parameters
- InputIterator – is a model of Input Iterator, and - InputIterator's- value_typeis convertible to- UnaryFunction'sargument type.
- UnaryFunction – The function’s return type must be convertible to - OutputType.
- OutputType – is a model of Assignable, and is convertible to - BinaryFunction'sfirst and second argument type.
- BinaryFunction – The function’s return type must be convertible to - OutputType.
 
- Returns
- The result of the transformed reduction.