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

标签 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;
}

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

最佳答案

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

std::transform(和类似算法)的大多数(如果不是全部)引用资料都会有这方面的示例。

关于c++ - 是否可以更改此代码以避免使用 C++ lambda 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6408881/

相关文章:

c++ - 为什么不将右值引用定义为右值表达式?

lambda - 无服务器:指定的存储桶不存在

java - 使用 lambda 表达式将列表转为 Hashmap

c++ - 连接lambda时如何将Qt::ConnectionType传递给QObject::connect?

c# - 使用 SQL、Lambda 或 LINQ 对数据进行分组

c++ - 为什么 void 返回一个值?

c++ - 如何在构造函数的静态列表中添加对象

c++ - 正确的 "polymorphic"方式存储枚举,有时存储一些数据

c++ - 使用模板作为函数参数

python - 对 Python 的内置排序(以范围和 lambda 为键)感到沮丧