2
 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类成员函数。怎么做或我的代码有什么问题?

4

1 回答 1

2

如果您的编译器支持 C++11,则可以使用 lambda:

std::transform(vectorOfClassA.begin(), vectorOfClassA.end(), 
  back_inserter(result),
  [] (const A& a)
  {
  return a.memberVariableOfClassB.GetValue();
  });
于 2012-10-19T14:20:01.747 回答