=====transform=====
Syntax:
#include
output_iterator transform( input_iterator start, input_iterator end, output_iterator result, UnaryFunction f );
output_iterator transform( input_iterator start1, input_iterator end1, input_iterator2 start2, output_iterator result, BinaryFunction f );
The ''transform'' algorithm applies the function ''f'' to some range of elements,
storing the result of each application of the function in ''result''.
The first version of the function applies ''f'' to each element in ''[start,end)'' and
assigns the first output of the function to ''result'', the second output to
''(result+1)'', etc.
The second version of the transform works in a similar manner, except that it
is given two ranges of elements and calls a binary function on a pair of
elements.
For example, the following code uses transform to convert a [[string/|string]] to
uppercase using the [[c/string/toupper|toupper function]]:
string s("hello");
transform(s.begin(), s.end(), s.begin(), toupper);
cout << s << endl;
The above code displays the following output:
HELLO
Alternatively, the following example shows how user-defined functions can be used to transform
a [[stl/vector//|vector]]:
int increment(int i) { return ++i; }
int sum(int a, int b) { return a+b; }
int main() {
vector v1;
for(int i=1; i<6; i++) v1.push_back (i*i); // v1: 1 4 9 16 25
vector v2(v1.size());
transform(v1.begin(), v1.end(), v2.begin(), increment); // v2: 2 5 10 17 26
// add the elements of v1 and v2 together, store the result in v1
transform(v1.begin(), v1.end(), v2.begin(), v1.begin(), sum); // v1: 3 9 19 33 51
return 0;
}
Related Topics: [[copy]], [[fill]], [[generate]]