thrust::exclusive_scan_by_key
Defined in thrust/scan.h
- 
template<typename InputIterator1, typename InputIterator2, typename OutputIterator>
 OutputIterator thrust::exclusive_scan_by_key(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, OutputIterator result)
- exclusive_scan_by_keycomputes an exclusive segmented prefix- This version of - exclusive_scan_by_keyuses the value- 0to initialize the exclusive scan operation.- This version of - exclusive_scan_by_keyassumes- plusas the associative operator used to perform the prefix sum. When the input and output sequences are the same, the scan is performed in-place.- This version of - exclusive_scan_by_keyassumes- equal_toas the binary predicate used to compare adjacent keys. Specifically, consecutive iterators- iand- i+1in the range- [first1, last1belong to the same segment if- *i == *(i+1), and belong to different segments otherwise.- 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. - Refer to the most general form of - exclusive_scan_by_keyfor additional details.- The following code snippet demonstrates how to use - exclusive_scan_by_key.- #include <thrust/scan.h> int keys[10] = {0, 0, 0, 1, 1, 2, 3, 3, 3, 3}; int vals[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; thrust::exclusive_scan_by_key(key, key + 10, vals, vals); // in-place scan // vals is now {0, 1, 2, 0, 1, 0, 0, 1, 2, 3}; - See also - exclusive_scan - Parameters
- first1 – The beginning of the key sequence. 
- last1 – The end of the key sequence. 
- first2 – The beginning of the input value sequence. 
- result – The beginning of the output value sequence. 
 
- Pre
- first1may equal- resultbut the range- [first1, last1)and the range- [result, result + (last1 - first1))shall not overlap otherwise.
- Pre
- first2may equal- resultbut the range- [first2, first2 + (last1 - first1)and the range- [result, result + (last1 - first1))shall not overlap otherwise.