`Description`

`Description`

```
```*Transform* performs an operation on objects; there are two versions of *transform*, one of which uses a single range of Input Iterators and one of which uses two ranges of Input Iterators.

The first version of *transform* performs the operation *op(*i)* for each iterator *i* in the range *[first, last)* , and assigns the result of that operation to **o*, where *o* is the corresponding output iterator. That is, for each *n* such that *0 <= n < last – first*, it performs the assignment **(result + n) = op(*(first + n))*. The return value is *result + (last – first)*.

The second version of *transform* is very similar, except that it uses a Binary Function instead of a Unary Function: it performs the operation *op(*i1, *i2)* for each iterator *i1* in the range *[first1, last1)* and assigns the result to **o*, where *i2* is the corresponding iterator in the second input range and where *o* is the corresponding output iterator. That is, for each *n* such that *0 <= n < last1 – first1*, it performs the assignment **(result + n) = op(*(first1 + n), *(first2 + n)*. The return value is *result + (last1 – first1)*.

Note that *transform* may be used to modify a sequence "in place": it is permissible for the iterators *first* and *result* to be the same. [1]