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

C++ 从另一个函数f0(x,y)定义函数f1(x)对象,但将y设置为固定值c++;,c++,std-function,C++,Std Function,假设我有一个函数 void f0(double x, double parameters[]) { ... } 我想定义一个函数对象 std::function <void (double x) >f1 std::函数f1 例如,f1(x)=f0(x,a)其中a是一组指定的参数(例如,双参数[4]={1.0,2.9,6.2,2.1}) 我该怎么做?我的想法是尝试使用一个函数来输入a输出f1,但我不确定如何做到这一点 这样做的动机是,本质上,我在库中还有另一个函数FUN

假设我有一个函数

  void f0(double x, double parameters[]) { ... }
我想定义一个函数对象

  std::function <void (double x) >f1 
std::函数f1
例如,
f1(x)=f0(x,a)
其中
a
是一组指定的参数(例如,
双参数[4]={1.0,2.9,6.2,2.1}

我该怎么做?我的想法是尝试使用一个函数来输入
a
输出f1,但我不确定如何做到这一点


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

这对于lambda非常简单:

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

但是对于几乎任何情况,我都更喜欢lambda。

我建议在lambda解决方案中使用
auto
而不是
std::function
。占用的空间更少,函数调用可能更快。请不要将lambda绑定到函数对象。用“自动”来代替。@otmo:如果可以,可以。但有时您需要一个动态绑定/重新绑定的函数对象。这就是为什么存在
std::function
,我不明白为什么不应该在其中存储lambda。(也就是说,我不明白为什么你会在所有类型的函数对象中挑出lambda,因为它被排除在
std::function
)的使用范围之外@otmo:这个问题特别要求一个带有该签名的
std::function
using namespace std::placeholders;
std::function<void(double)> f2 = std::bind(f0, _1, parameters);