我正在学习这个boost::lambda
库,为此我编写了这个示例代码,通过从对象中提取值来将其vector<A>
转换为。vector<int>
A
class A
{
public:
A(int n) : m_n(n){}
int get() const {return m_n;}
private:
int m_n;
};
int _tmain(int argc, _TCHAR* argv[])
{
using namespace boost::lambda;
std::vector<A> a1;
std::vector<int> a2;
a1.push_back(A(10));
a1.push_back(A(20));
std::for_each(a1.begin(), a1.end(), bind(&std::vector<int>::push_back, var(a2), bind(&A::get, _1)));
return 0;
}
for_each
经过几次尝试,我可以让零件工作。但是我仍然不像那些多重绑定那样。有没有其他方法可以写这个。最好我想做类似的事情:a2.push_back(bind(&A::get,_1));
,但这不会编译。