第104章 transformアルゴリズム関数を使う


transformアルゴリズム関数は、ある範囲のソースに加工を加えて新しい 配列を作ります。



template
   OutputIterator transform(
      InputIterator _First1, 
      InputIterator _Last1, 
      OutputIterator _Result,
      UnaryFunction _Func
   );
_First1は、元のソースの最初の要素を表す反復子です。

_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倍されているのがわかりますね。



もちろん普通の配列に対しても使うことができます。


[Index] [総合Index] [Previous Chapter] [Next Chapter]

Update Apr/03/2006 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。