我对C++相当陌生,我想做以下事情,但不知道如何做。

我想基于带有一些参数的模板定义一个函数。可以说我们有f(x)=a*x+b,但是参数ab将作为参数传递。

我想定义一个函数create_function(double a, double b),该函数将返回a*x+b,并将ab评估为传递给任何参数,以便我可以使用另一个函数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)

10-07 19:16
查看更多