微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

二等分方法中C ++中的函数指针

如何解决二等分方法中C ++中的函数指针

我有一个函数my_func(),它带有2个参数ab

我想在solve_for_b_by_bisection()函数内部定义一个名为f函数,这样我就可以调用f(b),对于某些固定输入{{ 1}}。我怎么做?我是否使用函数指针?

我这样做而不是直接调用my_func(a,b)的原因是,在我实际从事的工作中,它具有10多个常量变量-不可能每次都重复变量列表。

a

解决方法

您可以使用lambda

auto func = [a](double b) { return my_func(a,b); };
,

只需使用lambda:

double solve_for_b_for_contant_a_by_bisection (const double a,const double upperbound,const double lowerbound)
{
         auto f = [a]( double b ) { return my_func( a,b ); };
         
         auto lowerboundvalue = f(lowerbound)
         auto upperboundvalue = f(upperbound)
         auto midpointvalue = f(0.5 * (lowerbound+upperbound));
         /* The rest of the implementation */
     
}
,

您可以使用lambda函数(如其他人所建议的那样),也可以使用std::bind。看看效果如何,以及您是否更喜欢它:

#include <functional>

double my_func(const double a,const double b)
{
    /* some arbitary function */ 
}

double solve_for_b_for_contant_a_by_bisection (const double a,const double lowerbound)
{
    const auto f = std::bind(my_func,a,std::placeholders::_1);
             
    const auto lowerboundvalue = f(lowerbound);
    const auto upperboundvalue = f(upperbound);
    const auto midpointvalue = f(0.5 * (lowerbound+upperbound));
    /* The rest of the implementation */
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。