关于在 lambda 表达式中使用智能指针的问题

zhcosin zhcosin 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
问题是这样的,boost::lambda 表达式很适合用来作为标准库泛型算法中的函数对象,以 std::find_if 为例,假定有一个结构

class T
{
string id;
//......
};

然后有一个 std::vector

std::vector<T> v;

如果我要在这个容器中查找成员 id 的值等于 id_value 的元素,可以这样写

std::vector<T>::const_iterator it = std::find_if(v.begin(), v.end(),
boost::lambda::bind(&T::id, boost::lambda::_1) == id_value);

如果这个容器里不是直接存放的元素,而是存放的元素的原始指针,那么可以这样写

std::vector<T*>::const_iterator it = std::find_if(v.begin(), v.end(),
(boost::lambda::_1->* &T::id) == id_value);

但是如果容器里存放的不是原始指针,而是智能指针 boost::shared_ptr<T>,请问同样的操作该如何书写 lambda 表达式,求指点?
...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
zhcosin
C++ 语言 65,214 成员 250,514 内容