给定这个小片段:a 和 b 在编译时是未知的。 Map 是 vector 的映射函数,将 lambda 函数映射到 bar 的每个元素上。假设调用 fooify() ... a/b 会在执行 map() 之前被评估为常量,还是会在每次调用 lambda 时评估?
Foo::fooify(vector<float>& bar){
float a = getA();
float b = getB();
map(bar, [&](float c){c*(a/b);});
}
最佳答案
我怀疑 a/b
会在每次调用 lambda 函数时被计算。您可以使用以下方法确保它只被评估一次:
Foo::fooify(vector<float>& bar){
float a = getA();
float b = getB();
float ab = a/b;
map(bar, [](float c){c*ab;});
}
关于c++ - 什么时候评估 lambda 函数中的表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33816157/