我编写了一个二分解算器,函数名作为参数,该函数只有一个参数:
arr
现在我想在Beta逆累积概率函数中应用此求解器,其中CDF已知。但是这个CDF有三个参数,其中最后两个参数是已知的:
double Bisection(double(*func)(double), double xLower, double xUpper, double xEPS = 1e-9, double yEPS = 1e-9);
如何通过减少参数数量将此CDF用作求解器的参数?
答案 0 :(得分:1)
第一步是用C ++ std :: function替换你的C风格函数指针:
import { environment } from './environment';
export class MyComponent {
constructor() {
// Logs localhost:5001 in dev and www.myapi.com in prod
console.log(process.env.API_URL);
}
}
实施将与以前相同。现在您可以使用double Bisection(std::function<double(double)> func, double xLower, double xUpper, double xEPS = 1e-9, double yEPS = 1e-9);
来调用它:
std::bind()
通过将第二个和第三个参数绑定到变量,将{3}参数CDF函数转换为单参数(double alpha, beta, xLower, xUpper; // TODO: assign
Bisection(std::bind(CDF, _1, alpha, beta), xLower, xUpper);
)函数是什么std::bind()
。
您不能将_1
与原始C风格的函数指针一起使用,如下所述:convert std::bind to function pointer