transformアルゴリズム関数は、ある範囲のソースに加工を加えて新しい
配列を作ります。
template_First1は、元のソースの最初の要素を表す反復子です。OutputIterator transform( InputIterator _First1, InputIterator _Last1, OutputIterator _Result, UnaryFunction _Func );
_Last1は、元のソースの最後の次の要素を表す反復子です。
_Resultは、加工を加えた配列を格納する最初の要素の反復子です。
_Funcは、加工を加える関数です。 では、簡単なサンプルを見てみましょう。各要素を2倍して新しい配列を作ります。
// transform01.cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int func(int);
int main()
{
vector <int> v1, v2(10);
vector <int>::iterator p, q;
int i;
for (i = 0; i < 10; i++)
v1.push_back(i);
for (q = v1.begin(); q != v1.end(); q++)
cout << *q << ",";
cout << endl;
p = v2.begin();
transform(v1.begin(), v1.end(), p, func);
for (q = v2.begin(); q != v2.end(); q++)
cout << *q << ",";
cout << endl;
return 0;
}
int func(int a)
{
return 2 * a;
}
結果は次の図のようになります。
元の要素が2倍されているのがわかりますね。
もちろん普通の配列に対しても使うことができます。
Update Apr/03/2006 By Y.Kumei