c++ - 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);
}
解决方案
我可以在 asa47 库的链接下看到该函数带有源代码。这意味着您可以根据需要修改其参数以传递任何其他内容。我认为这是实现您所需要的最简单和最正确的方法。即,如果您想要附加 int 参数的第一个示例,double fn ( double x[] )
可以用类似的东西替换double fn ( double x[], int p)
,然后添加int p
到“nelmin”函数本身,然后修改对fn()
中的调用nelmin()
以传递该附加 p。
推荐阅读
- javascript - react-native run-android 不工作 [Ubuntu 20.04] **已修复**
- r - Collapse rows if present in same groups
- .net - NLog 过滤器 NetSparker 扫描
- java - 带有 Java Streams 的 ExecutorService 给出了这个错误“java.util.concurrent.ExecutionException: java.util.ConcurrentModificationException”
- r - 使用 R:根据不同的条件有效地删除行
- excel - Excel VBA更改单元格颜色
- javascript - JavaScript 本地存储第二个计数器
- azure - terraform destroy 然后重新创建策略分配
- javascript - 需要了解一些关于 React 应用程序中本地存储的建议
- reactjs - Protected Route - 如何停止登录用户访问登录和注册页面?反应