我有这段代码,我想知道是否可以更改它以避免使用 lambda 表达式:
#include <vector>
#include <algorithm>
#include <iterator>
class B
{
public:
B( double b ):b_(b){}
double b_;
};
class A
{
public:
double error( const B& b ) const {return a_-b.b_;};
double a_;
};
int main(int argc, char* argv[])
{
std::vector< B > bs;
std::vector< double > ds;
A a;
a.a_ = 10;
bs.push_back( B(1) );
bs.push_back( B(2) );
bs.push_back( B(3) );
std::transform( bs.begin(), bs.end(),
std::back_inserter( ds ),
[&a](const B& b){return a.error(b);} );
return 0;
}
我想保留 std::transform
但没有 lambda。
最佳答案
是的。就像我们多年来在 C++03 中所做的那样:使用函数对象。
std::transform
(和类似算法)的大多数(如果不是全部)引用资料都会有这方面的示例。
关于c++ - 是否可以更改此代码以避免使用 C++ lambda 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6408881/