我对C++相当陌生,我想做以下事情,但不知道如何做。
我想基于带有一些参数的模板定义一个函数。可以说我们有f(x)=a*x+b
,但是参数a
和b
将作为参数传递。
我想定义一个函数create_function(double a, double b)
,该函数将返回a*x+b
,并将a
和b
评估为传递给任何参数,以便我可以使用另一个函数func( double x )
对其进行评估。
目标是仅使用给定参数创建一次函数,以便随后可以由另一个例程像f(x)
一样反复调用它。真正的功能要比这复杂得多,但我可以对其进行调整。
我一直在看这个post,它与此类似,但是我不知道如何使它适应返回仍然依赖于x
的函数。
最佳答案
您可以使用lambdas执行此操作:
auto create_function(double a, double b)
{
return [a, b](double x) { return a * x + b; };
}
void test()
{
auto func = create_function(2.0, 3.0);
double y = func(4.0); // y is now 11
}
Demo(表明编译器已经知道
func(4.0)
将始终返回11)