修改作为输入传递的函数
Modifying a function passed as input
我将一个函数f传递给另一个函数SInf,但我在SInf中调用f的20多次都是调用f(1./x)/(x*x)
。
有没有一种方法可以实现另一个函数,比如g(x)=f(1./x)/(x*x)
?虽然我想不需要完成我需要做的事情,但这将极大地提高代码的可读性。
我宁愿没有SInf外部的类或结构,因为我希望它能够替换类似的函数。
double SInf(double (*f)(double), int N, double aa, double bb, bool closed=true)
{
struct functions{
double fi(double x){return f(1./x)/(x*x);}
};
//bla bla lots of code
}
给我
error: use of parameter from containing function
使用std::function
和lambda函数可以很容易地完成这样的操作。否则会很困难,因为您将无法传递额外的参数。
如果你正在编写一个简单的单线程应用程序,你仍然可以使用常规函数指针并通过全局变量传递额外的状态,但当程序变得复杂时,这种情况会很快崩溃。
StilesCrisis认为lambdas是解决这一问题的好方法(如果不是最好的话)是正确的。以下是您可以做的:
//define a function g
auto g = [&f] (double _x) {return f(1./_x)/(_x*_x);};
//call g
g(x);
如果你不熟悉这个语法,我建议你先读这篇文章。特别是,请看一下"使用lambdas捕获变量"部分。
相关文章:
- 如果我更改函数输入,我的递归不起作用?
- 初始化与函数输入相关的全局数组
- 如何生成比用户使用 rand() 函数输入的数字大 5-10% 的数字?
- 将函数更改为具有设置函数输入变量的方法的类
- 如何避免将 const 和非 const 成员函数输入到模板中的代码重复
- 是否有一种方法可以避免标头文件中使用的constexpr函数输入全局范围,而无需额外的名称空间
- 迭代器作为C 中的函数输入
- 如何为作为雇员类的指针传入的构造函数输入数据
- 最小的函数输入和输出错误
- C++ 函数输入错误
- QComboBox 作为 QT 中的函数输入参数
- 函数输入之前的分割故障
- 如何在视觉工作室 2012年设置函数输入参数的颜色
- 函数输入变化
- 使用函数输入 1 个 int 和 1 个字符串数组并循环
- 将数组用于函数输入参数
- 如何在c++中将函数输入强制转换为智能指针
- 自定义检查器的覆盖率引用函数输入
- 为什么我不能使用两个scanf函数输入字母
- 犰狳cov函数输入