when是lambda函数中的一个表达式

when is an expression in a lambda function evaluated?

本文关键字:一个 表达式 lambda 函数 when      更新时间:2023-10-16

给定这个小片段:a和b在编译时是未知的。Map是向量的映射函数,将lambda函数映射到条形图的每个元素上。假设调用了fooify()。。。在执行map()之前,是否会将a/b计算为常量,还是每次调用lambda时都会对其进行计算?

Foo::fooify(vector<float>& bar){
  float a = getA();
  float b = getB();
  map(bar, [&](float c){c*(a/b);});
}

我怀疑每次调用lambda函数时都会计算a/b。您可以使用以下方法确保只评估一次:

Foo::fooify(vector<float>& bar){
  float a = getA();
  float b = getB();
  float ab = a/b;
  map(bar, [](float c){c*ab;});
}