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 =
[¶meters](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);