thrust

◆ transform() [2/4]

template<typename InputIterator , typename OutputIterator , typename UnaryFunction >
OutputIterator thrust::transform ( InputIterator  first,
InputIterator  last,
OutputIterator  result,
UnaryFunction  op 
)

This version of transform applies a unary function to each element of an input sequence and stores the result in the corresponding position in an output sequence. Specifically, for each iterator i in the range [first, last) the operation op(*i) is performed and the result is assigned to *o, where o is the corresponding output iterator in the range [result, result + (last - first) ). The input and output sequences may coincide, resulting in an in-place transformation.

Parameters
firstThe beginning of the input sequence.
lastThe end of the input sequence.
resultThe beginning of the output sequence.
opThe tranformation operation.
Returns
The end of the output sequence.
Template Parameters
InputIteratoris a model of Input Iterator and InputIterator's value_type is convertible to UnaryFunction's argument_type.
OutputIteratoris a model of Output Iterator.
UnaryFunctionis a model of Unary Function and UnaryFunction's result_type is convertible to OutputIterator's value_type.
Precondition
first may equal result, but the range [first, last) shall not overlap the range [result, result + (last - first)) otherwise.

The following code snippet demonstrates how to use transform

int data[10] = {-5, 0, 2, -3, 2, 4, 0, -1, 2, 8};
thrust::transform(data, data + 10, data, op); // in-place transformation
// data is now {5, 0, -2, 3, -2, -4, 0, 1, -2, -8};
See also
http://www.sgi.com/tech/stl/transform.html