【问题标题】:Making a new function by fixing one of the input parameters [closed]通过修复一个输入参数来创建一个新函数[关闭]
【发布时间】:2016-03-26 13:17:21
【问题描述】:

我想写一个函数double add_100(double x),我已经写好了double add_two_numbers(double a, double b)的代码。 注意:这里变量x 是本地的,因此我需要在main() 函数本身中实现它。我发现std::bind 可能会有所帮助,但不知道如何实现它。我认为另一种可能性是Lambda expressions,但我再次无法弄清楚如何实现它。

【问题讨论】:

  • 如果 100 是指在运行时会知道的某个数字,那么您无法实现这样的功能。不过,你可以发std::function

标签: c++ c++11 gcc


【解决方案1】:

您可能想要 lambda 或 std::function,或 std::bind

auto l_add_100 = [](double x) { return add_two_numbers(x, 100); };
std::function<double(double)> f_add_100 = [](double x) { return add_two_numbers(x, 100); }
auto b_add_100 = std::bind(add_two_numbers, std::place_holder::_1, 100);

或使用非硬编码数字

double y = //...
auto l_add_y = [y](double x) { return add_two_numbers(x, y); }
std::function<double(double)> f_add_y = [](double x) { return add_two_numbers(x, y); }
auto b_add_100 = std::bind(add_two_numbers, std::place_holder::_1, y);

【讨论】:

    【解决方案2】:
    double add_100(double x)
    {
       return add_two_numbers(x, 100);
    }
    

    【讨论】:

    • 确切的问题是我想创建一个函数 double f(double x),它将评估任何函数在点 'x' 的值。但是现在在为多项式制作这样的函数时,我有一个额外的参数 vector coeff。用于存储系数。现在使用这个我该怎么做。因为为了计算 f(x) 我需要给它发送 vector coeff.
    • @user3496912 你的意思是std::bind?
    • @user 可以在上面阅读确切的问题,看起来与您在该评论中写的完全不同。与其三心二意地尝试写下这个问题,并希望我们能读懂你的想法,不如花更多时间提出你希望我们回答的问题。下次请加倍努力。
    • @DavidHeffernan 我是社区的新手。对不起,对于问题的错误描述。我现在已经编辑了问题,下次会尝试改进。
    • 您的编辑几乎没有改进。请加倍努力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 2022-01-15
    相关资源
    最近更新 更多