c++ - 如何摆脱 temp 并使用一种转换来完成工作?

标签 c++

 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/

相关文章:

c++ - 使用malloc代替new,创建对象时调用拷贝构造函数

c++ - STL 或 BOOST map 中是否有类似具有查找和弹出操作的容器?

c++ - 使用\in 字符串作为文字而不是转义符

C++将类对象推送到容器时在堆栈或堆中创建类对象?

c++ - 无法为数组指定显式初始值设定项

c++ - 是否可以在引发异常时记录异常?

c++ - 线程不刷新数据,在屏幕上显示数据时出错

c++ - gen~ phasor() 是做什么的? (将 Max/MSP gen 转换为 C++)

c++ - std::decay 和 std::remove_cvref 之间的区别?

c++ - C 套接字发送/接收缓冲区类型