从另一个函数 f0(x,y) 定义函数 f1(x) 对象,但将 y 设置为固定值 c++

Define a function f1(x) object from an another function f0(x,y), but setting y to a fixed value c++

假设我有一个函数

  void f0(double x, double parameters[]) { ... }

我想定义一个函数对象

  std::function <void (double x) >f1 

例如,f1(x) = f0(x,a) 其中 a 是一组指定的参数(例如 double parameters[4] = {1.0, 2.9, 6.2, 2.1}

我该怎么做?我的想法是尝试拥有一个输入 a 输出 f1 的函数,但我不确定该怎么做。

这样做的动机是,本质上,我在库中还有另一个函数 FUNC,它输入一个具有单个双输入的函数,但我希望更灵活地向该函数添加参数

使用 lambda 非常简单:

std::function<void(double)> f1 =
    [&parameters](double x) { f0(x, parameters); };

或者,您可以使用 std::bind

using namespace std::placeholders;
std::function<void(double)> f2 = std::bind(f0, _1, parameters);

但几乎在任何情况下我都更喜欢 lambda。