关于在 lambda 表达式中使用智能指针的问题
本帖最后由 zhcosin 于 2013-08-07 17:29:00 编辑 问题是这样的,boost::lambda 表达式很适合用来作为标准库泛型算法中的函数对象,以 std::find_if 为例,假定有一个结构
class T
{
string id;
//......
};
std::vector<T> v;
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);
std::vector<boost::shared_ptr<T>> v;
std::find_if(v.begin(),v.end(),boost::lambda::bind(&T::id,*boost::lambda::_1) == "test");