【发布时间】:2015-06-18 02:50:14
【问题描述】:
我有一个函数,它获取两个值 x 和 y,并返回结果:
std::function< double( double, double ) > mult =
[]( double x, double y){ return x*y; };
现在我想得到一个常数 y 的单变量函数。我已经写了下面的代码,但是它不起作用。
std::function<
std::function< double(double) > (
std::function< double(double, double) >,
double
)
> funcYgivenX =
[](std::function< double(double, double) > func2d, double inX) {
return [&func2d, &inX]( double inY ) {
return func2d(inX, inY);
};
};
我在这里做错了什么?最好(最有效)的方法是什么?
【问题讨论】:
-
关于“我在这里做错了什么”,您能否更清楚了解您要做什么。第二个 sn-p 有很多语法错误,似乎没有意义。关于“最有效”和“最佳”,即使对于一些明确定义的目标,这些判断也取决于很多事情。您可以从定义您的标准开始。非常明确。
-
您在寻找
std::bind吗? -
@T.C.在 C++11 中,
bind只需要在几个极端情况下使用,而在 C++14 中,即使在这些情况下,绑定问题也可以使用 lambdas 来解决。 -
@SU3 我猜你在 STL 的“从不使用
bind”阵营。我在这个问题上比较矛盾。 -
@SU3 我想there are good use cases for each :)