私はstd :: vectorを持っており、各要素の特定の属性 をチェックしたいと思います。 SomeStructには属性 'type'があります。この属性 がType1かType2のいずれかであることを確認します。boost :: lambdaとstd :: find_ifを併用するには?
私の計画は、boost :: lambdaを使用することです。
std::vector<SomeStruct>::const_iterator it =
std::find_if(
vec.begin(), vec.end(),
_1.type == SomeStruct::Type1 || _1.type == SomeStruct::Type2);
私は各要素の特定の属性にアクセスする必要があるので、私は 使用ブースト::まったくラムダをできるなら、私はわかりません。
ヒント
これは完璧ですが、なぜ動作するのかわかりません。また、私をさらに混乱させる(&SomeStruct :: func、_1)(ここでfuncは関数です)をバインドすると同じように動作します。 – yhager
@yhager 'bind(&SomeStruct :: type、type1)'は、 '_1'がプレースホルダーであるオブジェクトに対して' .type'を実行した結果を表すブーストラムダを与えます。詳細については[バインドのドキュメントを参照](http://www.boost.org/doc/libs/1_50_0/doc/html/lambda/le_in_details.html#lambda.bind_expressions)を参照してください。 – sepp2k