繁体   English   中英

如何将boost :: lambda与std :: find_if一起使用?

[英]How to use boost::lambda together with std::find_if?

我有一个std :: vector,我想检查每个元素的特定属性。 SomeStruct有一个属性'type'。 我想检查此属性是Type1还是Type2。

我的计划是使用boost :: lambda。

std::vector<SomeStruct>::const_iterator it =
    std::find_if(
        vec.begin(), vec.end(),
        _1.type == SomeStruct::Type1 || _1.type == SomeStruct::Type2);

因为我需要访问每个元素的特定属性,所以我不确定是否可以使用boost :: lambda。

任何提示?

std::find_if(
    vec.begin(), vec.end(),
    bind(&SomeStruct::type, _1) == SomeStruct::Type1 ||
    bind(&SomeStruct::type, _1) == SomeStruct::Type2);

你的表达式因为而没有编译

_1.type

点运算符不能重载,因此表达式不能用作lambda表达式,它只是指boost :: lambda.hpp中定义的对象_1成员type 好吧,我不知道什么是_1类型,并且考虑这种类型让我不寒而栗 - 它不适合我们,凡人知道它:-)。
正确的表达式由sepp2k给出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM