在 C++ 11(或更高版本)中,我可以使用 std::transform
和 lambda 函数来转换还采用其他参数的 vector 吗?例如,如何将 param
传递给下面的 lambda 函数?
std::vector<double> a{ 10.0, 11.0, 12.0 };
std::vector<double> b{ 20.0, 30.0, 40.0 };
std::vector<double> c;
double param = 1.5;
//The desired function is c = (a-b)/param
transform(a.begin(), a.end(), b.begin(), std::back_inserter(c),
[](double x1, double x2) {return(x1 - x2)/param; });
std::transform
想要一个带有两个输入参数的函数。我需要使用 std::bind
吗?
最佳答案
你只需要在你的捕获列表中捕获参数:
transform(a.begin(), a.end(), b.begin(), std::back_inserter(c),
[param](double x1, double x2) {return(x1 - x2)/param; });
通过引用捕获它也有效 - 如果 param 是一个大类,那将是正确的。但是对于双 param
是没问题的。
关于c++ - 如何将 std::transform 与带有附加参数的 lambda 函数一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53011875/