c++ - 减少参数数量

标签 c++ c++11

假设我有一个方法:

std::vector<double> minimize(double (*f)(const std::vector<double>& x))

采用函数 f(x) 并找到使它最小化的 x。假设我想最小化一个函数 g(x, a)(关于 x),它也接受参数 a 作为参数:

double g(const std::vector<double>& x, const double a)

如果 a 的值仅在运行时已知,我如何(在 c++11 中)使用方法 minimize 做到这一点?

最佳答案

您可以轻松使用 lambda。

minimize([=](const std::vector<double>& x) { return g(x, a); });

这是假设您将函数更改为使用 std::function 而不是函数指针。函数指针非常有限,根本不能做任何有趣的事情,就像这样,所以最好忘记它们的存在。

关于c++ - 减少参数数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32682228/

相关文章:

c++ - 包装 ostream 的正确模板方法

c++ - 调用类的成员函数时,类的对象损坏

c++ - 指向成员函数语法的指针

c++ - std::bind 如何增加传递给函数的参数数量?

c++ - 如何缩短此方法签名?

c++ - 我已经设法将一些代码从 msdn 移植到 MinGW 以从子应用程序捕获 stdout,但它不会退出,这里有什么问题吗?

c++ - 对角排列数组

arrays - 含糊不清的新声明'unsigned char *

c++ - 从 VS2013 到 VS2017 std::async 不启动新线程

c++ - 使用 std::shared_ptr 接收变量作为引用的优缺点是什么?