thrust::inclusive_scan
Defined in thrust/scan.h
- 
template<typename DerivedPolicy, typename InputIterator, typename OutputIterator, typename T, typename AssociativeOperator>
 OutputIterator thrust::inclusive_scan(const thrust::detail::execution_policy_base<DerivedPolicy> &exec, InputIterator first, InputIterator last, OutputIterator result, T init, AssociativeOperator binary_op)
- inclusive_scancomputes an inclusive prefix sum operation. The term ‘inclusive’ means that each result includes the corresponding input operand in the partial sum. More precisely,- binary_op(init, *first)is assigned to- *resultand so on. This version of- inclusive_scanrequires both an associative operator and an initial value- init. When the input and output sequences are the same, the scan is performed in-place.- Results are not deterministic for pseudo-associative operators (e.g., addition of floating-point types). Results for pseudo-associative operators may vary from run to run. - The algorithm’s execution is parallelized as determined by - exec.- The following code snippet demonstrates how to use - inclusive_scanwith initial value to compute an in-place prefix sum using the- thrust::hostexecution policy for parallelization:- int data[10] = {-5, 0, 2, -3, 2, 4, 0, -1, 2, 8}; thrust::inclusive_scan(thrust::host, data, data + 10, data, 1, thrust::maximum<>{}); // in-place scan // data is now {1, 1, 2, 2, 2, 4, 4, 4, 4, 8} - 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. 
- init – The initial value. 
- binary_op – The associative operator used to ‘sum’ values. 
 
- Template Parameters
- DerivedPolicy – The name of the derived execution policy. 
- InputIterator – is a model of Input Iterator and - InputIterator's- value_typeis convertible to- OutputIterator's- value_type.
- OutputIterator – is a model of Output Iterator and - OutputIterator's- value_typeis convertible to both- AssociativeOperator'sfirst and second argument type.
- T – is convertible to - OutputIterator's- value_type.
- AssociativeOperator – The function’s return type must be convertible to - OutputIterator's- value_type.
 
- Returns
- The end of the output sequence. 
- Pre
- firstmay equal- resultbut the range- [first, last)and the range- [result, result + (last - first))shall not overlap otherwise.