2006年11月27日

boost::lambda

先日のboost::bindのサンプルコードは、 boost::lambdaを使うことによりもうちょっと分かり易くなるようです。

以下のboost::bindを使ったコード(using namespaceを使って見やすくしました)は、

using namespace boost;
ItemList::iterator s = std::find_if(Items.begin(), Items.end(), bind(std::equal_to<int>(), bind(&Item::GetValue, _1), 10));
boost::lambdaにより、以下のようになります。
using namespace boost::lambda;
ItemList::iterator s = std::find_if(Items.begin(), Items.end(), bind(&Item::GetValue, *_1) == 10);

若干短くなり、==など見慣れた演算子が登場して分かりやすくなりましたね。・・・っていうかなんでこれ動くの・・・。

boost::lambdaのより変態的なサンプルを見たい方は、以下のページがお薦めです。
Entangled Space boost user - lambda

投稿者 MASATO : 2006年11月27日 20:28 | トラックバック
コメント
コメントする









名前、アドレスを登録しますか?