25 Algorithms library [algorithms]

25.4 Mutating sequence operations [alg.modifying.operations]

25.4.4 Transform [alg.transform]

template<class InputIterator, class OutputIterator, class UnaryOperation> OutputIterator transform(InputIterator first, InputIterator last, OutputIterator result, UnaryOperation op); template<class ExecutionPolicy, class InputIterator, class OutputIterator, class UnaryOperation> OutputIterator transform(ExecutionPolicy&& exec, InputIterator first, InputIterator last, OutputIterator result, UnaryOperation op); template<class InputIterator1, class InputIterator2, class OutputIterator, class BinaryOperation> OutputIterator transform(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, OutputIterator result, BinaryOperation binary_op); template<class ExecutionPolicy, class InputIterator1, class InputIterator2, class OutputIterator, class BinaryOperation> OutputIterator transform(ExecutionPolicy&& exec, InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, OutputIterator result, BinaryOperation binary_op);

Requires: op and binary_op shall not invalidate iterators or subranges, or modify elements in the ranges

  • [first1, last1],

  • [first2, first2 + (last1 - first1)], and

  • [result, result + (last1 - first1)].266

Effects: Assigns through every iterator i in the range [result, result + (last1 - first1)) a new corresponding value equal to op(*(first1 + (i - result)) or binary_op(*(first1 + (i - result)), *(first2 + (i - result))).

Returns: result + (last1 - first1).

Complexity: Exactly last1 - first1 applications of op or binary_op.

Remarks: result may be equal to first in case of unary transform, or to first1 or first2 in case of binary transform.

The use of fully closed ranges is intentional.