thrust::transform_inclusive_scan
Defined in thrust/transform_scan.h
-
template<typename DerivedPolicy, typename InputIterator, typename OutputIterator, typename UnaryFunction, typename T, typename AssociativeOperator>
OutputIterator thrust::transform_inclusive_scan(const thrust::detail::execution_policy_base<DerivedPolicy> &exec, InputIterator first, InputIterator last, OutputIterator result, UnaryFunction unary_op, T init, AssociativeOperator binary_op) transform_inclusive_scan
fuses thetransform
andinclusive_scan
operations.transform_inclusive_scan
is equivalent to performing a tranformation defined byunary_op
into a temporary sequence and then performing aninclusive_scan
on the tranformed sequence. In most cases, fusing these two operations together is more efficient, since fewer memory reads and writes are required. Intransform_inclusive_scan
, ifbinary_op(init, unary_op(*first))
isaccum
, it is assigned to*result
and the result ofbinary_op(accum, unary_op(*(first + 1)))
is assigned to*(result + 1)
, and so on. The transform scan operation is permitted to be in-place.The algorithm’s execution is parallelized as determined by
exec
.The following code snippet demonstrates how to use
transform_inclusive_scan
using thethrust::host
execution policy for parallelization:#include <thrust/transform_scan.h> #include <thrust/execution_policy.h> ... int data[6] = {1, 0, 2, 2, 1, 3}; thrust::negate<int> unary_op; thrust::plus<int> binary_op; thrust::transform_inclusive_scan(thrust::host, data, data + 6, data, unary_op, 4, binary_op); // in-place scan // data is now {3, 3, 1, -1, -2, -5}
See also
transform
See also
inclusive_scan
- Parameters
exec – The execution policy to use for parallelization.
first – The beginning of the input sequence.
last – The end of the input sequence.
result – The beginning of the output sequence.
unary_op – The function used to tranform the input sequence.
init – The initial value of the
transform_inclusive_scan
binary_op – The associative operator used to ‘sum’ transformed values.
- Template Parameters
DerivedPolicy – The name of the derived execution policy.
InputIterator – is a model of Input Iterator and
InputIterator's
value_type
is convertible tounary_op's
input type.OutputIterator – is a model of Output Iterator.
UnaryFunction – is a model of Unary Function and accepts inputs of
InputIterator's
value_type
.UnaryFunction's
result_type is convertable toOutputIterator's
value_type
.T – is convertible to
OutputIterator's
value_type
.AssociativeOperator – is a model of <ahref=”https://en.cppreference.com/w/cpp/utility/functional/binary_function”> Binary Function and
AssociativeOperator's
result_type
is convertible toOutputIterator's
value_type
.
- Returns
The end of the output sequence.
- Pre
first
may equalresult
, but the range[first, last)
and the range[result, result + (last - first))
shall not overlap otherwise.