コンピュータや音楽の事書いてます

C++0xのラムダ式のメモ

ラムダの意味がそもそも分からなかった。調べると数学の話になってメンドクサイのでC++的に言うと、「一度しか使わない様な関数オブジェクトは使う場所に書いちゃったほうが分かりやすい」という事だと思う。

非ラムダ

struct hyouji {
	void operator()(string s){
		cout<<s<<endl;
	}
};

int main(){
	vector<string> namelist;
	//〜〜namelistの中身を入れる処理〜〜

	for_each(namelist.begin(), namelist.end(), hyouji());
	return 0;
}

ラムダ(テスト出来るコンパイラが未入手なので動く保障無し!)→動いた 2011/10/07

int main(){
	vector<string> namelist;
	//〜〜namelistの中身を入れる処理〜〜

	for_each(namelist.begin(), namelist.end(), [](string s) { cout<<s<<endl; } );
	return 0;
}

[](string s) の[]の中には関数スコープの中に送る(キャプチャと言うらしい?)変数などを書く。&を付ければ参照で送れる。