如何解决二等分方法中C ++中的函数指针
我想在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 举报,一经查实,本站将立刻删除。