读书人

boost lambda语法怎么访问自定义类型参

发布时间: 2012-04-15 18:39:21 作者: rapoo

boost lambda语法如何访问自定义类型参数的成员?
boost lambda的demo里都是这样的使用原生类型的代码

C/C++ code
vector<int> vec;for_each(vec.begin(), vec.end(), _1 = _1 * 2);


如果我要使用自定义类型,该如何访问它的成员?
比如下面这个例子,sort语句用的C++0x语法,但我的编译器是vc2008,自然无法编译,转换成boost语法该如何操作?
C/C++ code
struct user_info{    uint64_t account_id;    uint64_t coin;    uint64_t exp;};void test(){    vector<user_info> vec;    // 即访问自定义类型    sort(vec.begin(), vec.end(),             [](const user_info& lhs, const user_info& rhs){return lhs.exp < rhs.exp;});}


[解决办法]
C/C++ code
sort(vec.begin(), vec.end(),     bind(&user_info::exp, var(_1)) < bind(&user_info::exp, var(_2)));或者:sort(vec.begin(), vec.end(),     (&_1) ->* &user_info::exp < (&_2) ->* &user_info::exp); 

读书人网 >C++

热点推荐