vector<double> result(vectorOfClassA.size());
vector<classB> temp(vectorOfClassA.size());
std::transform(vectorOfClassA.begin(), vectorOfClassA.end(), back_inserter(temp),
std::tr1::bind(&A::memberVariableOfClassB, std::tr1::placeholders::_1));
std::transform(temp.begin(), temp.end(), back_inserter(result),
std::tr1::bind(&B::getValue, std::tr1::placeholders::_1));
我喜欢使用一种转换,但它无法编译
std::transform(vectorOfClassA.begin(), vectorOfClassA.end(), back_inserter(result),
std::tr1::bind(&B::getValue,
std::tr1::bind(&A::memberVariableOfClassB,
std::tr1::placeholders::_1)));
这里double getValue()
是B类成员函数。如何做到这一点或者我的代码有什么问题?
最佳答案
如果您的编译器支持 C++11,您可以使用 lambda:
std::transform(vectorOfClassA.begin(), vectorOfClassA.end(),
back_inserter(result),
[] (const A& a)
{
return a.memberVariableOfClassB.GetValue();
});
关于c++ - 如何摆脱 temp 并使用一种转换来完成工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12976141/