假设我有一个功能
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库中,即输入,一个双输入的功能,但我希望有更多的灵活性,以参数添加到该功能
这是很简单的一个拉姆达:
std::function<void(double)> f1 =
[¶meters](double x) { f0(x, parameters); };
另外,您也可以使用std::bind
。
using namespace std::placeholders;
std::function<void(double)> f2 = std::bind(f0, _1, parameters);
但我几乎在任何情况下都更喜欢lambda。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句