是否可以更改此代码以避免使用C++ lambda表达式?

Ale*_*son 0 c++ lambda

我有这个代码,我想知道我是否可以更改它以避免使用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;
}
Run Code Online (Sandbox Code Playgroud)

我想保留std::transform但没有lambda.

Lig*_*ica 5

是.就像我们多年来在C++ 03中所做的一样:使用函数对象.

std::transform(以及类似算法)的大多数(如果不是全部)参考都会有这样的例子.