template < class InputIterator, class OutputIterator, class UnaryOperator >
OutputIterator transform ( InputIterator first1, InputIterator last1,
OutputIterator result, UnaryOperator op );
template < class InputIterator1, class InputIterator2,
class OutputIterator, class BinaryOperator >
OutputIterator transform ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, OutputIterator result,
BinaryOperator binary_op );
Apply function to range
The first version applies op
to all the elements in the input range ([first1,last1)
) and stores each returned value in the range beginning at result
.
The second version uses as argument for each call to binary_op
one element from the first input range ([first1,last1)
) and one element from the second input range (beginning at first2
).
The behavior of this function template is equivalent to:
1 2 3 4 5 6 7 8 |
|
The function allows for the destination range to be the same as one of the input ranges to make transformations in place
.
Parameters
- first1, last1
- Input iterators to the initial and final positions of the first sequence. The range used is [first1,last1) , which contains all the elements between first1 and last1 , including the element pointed by first1 but not the element pointed by last1 . first2
- Input iterator to the initial position of the second range. The range includes as many elements as [first1,last1) . result
- Output iterator to the initial position of the range where function results are stored. The rangeincludes as many elements as [first1,last1) . op
- Unary function taking one element as argument, and returning some result value. This can either be a pointer to a function or an object whose class overloads operator() . binary_op
- Binary function taking two elements as argument (one of each of the two sequences), and returning some result value. This can either be a pointer to a function or an object whose class overloads operator() .
Return value
An iterator pointing to the element that follows the last element written in the result
sequence.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
Output:
first contains: 21 41 61 81 101 |
Complexity
Linear: Performs as many assignments and applications of op or binary_op as the number of elements in the range [first1,last1) .
http://www.cplusplus.com/reference/algorithm/transform/