Tengo un std :: vector y quiero verificar un atributo específico de cada elemento. SomeStruct tiene un atributo 'tipo'. Quiero comprobar que este atributo sea Type1 o Type2.Cómo usar boost :: lambda junto con std :: find_if?
Mi plan es usar boost :: lambda.
std::vector<SomeStruct>::const_iterator it =
std::find_if(
vec.begin(), vec.end(),
_1.type == SomeStruct::Type1 || _1.type == SomeStruct::Type2);
Porque necesito para acceder a un atributo específico de cada elemento, no estoy seguro si puedo uso boost :: lambda en absoluto.
¿Alguna pista?
Esto es perfecto, pero no puedo entender por qué funciona. También funciona de la misma manera si enlaza (& SomeStruct :: func, _1) (donde func es una función) que me confunde aún más. – yhager
@yhager 'bind (& SomeStruct :: type, _1)' le da un impulso lambda que representa el resultado de hacer '.type' en el objeto que' _1' es un marcador de posición para. Para obtener más información [consulte la documentación para vincular] (http://www.boost.org/doc/libs/1_50_0/doc/html/lambda/le_in_details.html#lambda.bind_expressions). – sepp2k