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);