Template Function thrust::transform_if(InputIterator1, InputIterator1, InputIterator2, ForwardIterator, UnaryFunction, Predicate)¶
Function Documentation¶
-
template<typename
InputIterator1
, typenameInputIterator2
, typenameForwardIterator
, typenameUnaryFunction
, typenamePredicate
>
ForwardIteratorthrust
::
transform_if
(InputIterator1 first, InputIterator1 last, InputIterator2 stencil, ForwardIterator result, UnaryFunction op, Predicate pred) This version of
transform_if
conditionally applies a unary function to each element of an input sequence and stores the result in the corresponding position in an output sequence if the corresponding position in a stencil sequence satisfies a predicate. Otherwise, the corresponding position in the output sequence is not modified.Specifically, for each iterator
i
in the range[first, last)
the predicatepred(*s)
is evaluated, wheres
is the corresponding input iterator in the range[stencil, stencil + (last - first) )
. If this predicate evaluates totrue
, the result ofop(*i)
is assigned to*o
, whereo
is the corresponding output iterator in the range[result, result + (last - first) )
. Otherwise,op(*i)
is not evaluated and no assignment occurs. The input and output sequences may coincide, resulting in an in-place transformation.The following code snippet demonstrates how to use
transform_if:
- Return
The end of the output sequence.
- Pre
first
may equalresult
, but the range[first, last)
shall not overlap the range[result, result + (last - first))
otherwise.- Pre
stencil
may equalresult
, but the range[stencil, stencil + (last - first))
shall not overlap the range[result, result + (last - first))
otherwise.- Parameters
first
: The beginning of the input sequence.last
: The end of the input sequence.stencil
: The beginning of the stencil sequence.result
: The beginning of the output sequence.op
: The tranformation operation.pred
: The predicate operation.
- Template Parameters
InputIterator1
: is a model of Input Iterator andInputIterator1's
value_type
is convertible toUnaryFunction's
argument_type
.InputIterator2
: is a model of Input Iterator andInputIterator2's
value_type
is convertible toPredicate's
argument_type
.ForwardIterator
: is a model of Forward Iterator.UnaryFunction
: is a model of Unary Function andUnaryFunction's
result_type
is convertible toOutputIterator's
value_type
.Predicate
: is a model of Predicate.
#include <thrust/transform.h> #include <thrust/functional.h> int data[10] = {-5, 0, 2, -3, 2, 4, 0, -1, 2, 8}; int stencil[10] = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}; thrust::negate<int> op; thrust::identity<int> identity; thrust::transform_if(data, data + 10, stencil, data, op, identity); // in-place transformation // data is now {5, 0, -2, -3, -2, 4, 0, -1, -2, 8};
- See
thrust::transform