I have a std::vector and I want to check a specific attribute of each element. SomeStruct has an attribute 'type'. I want to check this attribute to be either Type1 or Type2.
My plan is to use boost::lambda.
std::vector<SomeStruct>::const_iterator it =
std::find_if(
vec.begin(), vec.end(),
_1.type == SomeStruct::Type1 || _1.type == SomeStruct::Type2);
Because I need to access a specific attribute of each element, I'm not sure if I can use boost::lambda at all.
Any hints?
std::find_if(
vec.begin(), vec.end(),
bind(&SomeStruct::type, _1) == SomeStruct::Type1 ||
bind(&SomeStruct::type, _1) == SomeStruct::Type2);
Your expression does not compile because of
_1.type
The dot operator cannot be overloaded so your expression cannot work as a lambda expression, It's simply referring to member type
of the object _1
defined in boost::lambda.hpp. Well, I don't know what is _1
type and thinking about this type makes me shudder - it's not for us, mortals to know it :-).
The proper expression is given by sepp2k.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With