首页 > 解决方案 > C++ 中的函数包装器

问题描述

很简单,我在 C++ 中使用了一个优化库,它接受单个变量的函数。我希望能够传入多个参数(这个库不支持)。我想做的是创建一个 lambda 函数(有点像 Python 中的),它让我可以将成本函数表示为传入两个参数的单个变量的函数。

这是我要使用伪代码的简化版本。任何帮助将非常感激。我似乎无法让它与 C++ 中的 lambda 一起使用。

Optimize 来自一个库(asa047)。我在这里写的版本根本不现实,只是为了演示这个函数的作用。

double cost(double x, double param1, double param2){
    return x*param1 + param2;

}

double optimize(double fn( double x), double initial_value){
    return optimal_x;

}

int main(){

    double param1 = 2;
    double param2 = 3; 
    function_object f; //What I would like to create
    f(double x){
        return cost(x,param1,param2);
    }
    optimize(f,2); 
}

标签: c++lambda

解决方案


我可以在 asa47 库的链接下看到该函数带有源代码。这意味着您可以根据需要修改其参数以传递任何其他内容。我认为这是实现您所需要的最简单和最正确的方法。即,如果您想要附加 int 参数的第一个示例,double fn ( double x[] )可以用类似的东西替换double fn ( double x[], int p),然后添加int p到“nelmin”函数本身,然后修改对fn()中的调用nelmin()以传递该附加 p。


推荐阅读