Template Function thrust::scatter_if(InputIterator1, InputIterator1, InputIterator2, InputIterator3, RandomAccessIterator)¶
Function Documentation¶
-
template<typename
InputIterator1, typenameInputIterator2, typenameInputIterator3, typenameRandomAccessIterator>
voidthrust::scatter_if(InputIterator1 first, InputIterator1 last, InputIterator2 map, InputIterator3 stencil, RandomAccessIterator output) scatter_ifconditionally copies elements from a source range into an output array according to a map. For each iteratoriin the range[first, last)such that*(stencil + (i - first))is true, the value*iis assigned tooutput[*(map + (i - first))]. The output iterator must permit random access. If the same index appears more than once in the range[map, map + (last - first))the result is undefined.#include <thrust/scatter.h> ... int V[8] = {10, 20, 30, 40, 50, 60, 70, 80}; int M[8] = {0, 5, 1, 6, 2, 7, 3, 4}; int S[8] = {1, 0, 1, 0, 1, 0, 1, 0}; int D[8] = {0, 0, 0, 0, 0, 0, 0, 0}; thrust::scatter_if(V, V + 8, M, S, D); // D contains [10, 30, 50, 70, 0, 0, 0, 0];
- Pre
The iterator
result + ishall not refer to any element referenced by any iteratorjin the range[first,last)for all iteratorsiin the range[map,map + (last - first)).- Pre
The iterator
result + ishall not refer to any element referenced by any iteratorjin the range[map,map + (last - first))for all iteratorsiin the range[map,map + (last - first)).- Pre
The iterator
result + ishall not refer to any element referenced by any iteratorjin the range[stencil,stencil + (last - first))for all iteratorsiin the range[map,map + (last - first)).- Pre
The expression
result[*i]shall be valid for all iteratorsiin the range[map,map + (last - first))for which the following condition holds:*(stencil + i) != false.- Parameters
first: Beginning of the sequence of values to scatter.last: End of the sequence of values to scatter.map: Beginning of the sequence of output indices.stencil: Beginning of the sequence of predicate values.output: Beginning of the destination range.
- Template Parameters
InputIterator1: must be a model of Input Iterator andInputIterator1'svalue_typemust be convertible toRandomAccessIterator'svalue_type.InputIterator2: must be a model of Input Iterator andInputIterator2'svalue_typemust be convertible toRandomAccessIterator'sdifference_type.InputIterator3: must be a model of Input Iterator andInputIterator3'svalue_typemust be convertible tobool.RandomAccessIterator: must be a model of Random Access iterator.
- Note
scatter_ifis the inverse of thrust::gather_if.