函数名称作为参数但具有不同的参数个数

时间:2017-08-26 02:33:03

标签: c++ arguments

我编写了一个二分解算器,函数名作为参数,该函数只有一个参数:

arr

现在我想在Beta逆累积概率函数中应用此求解器,其中CDF已知。但是这个CDF有三个参数,其中最后两个参数是已知的:

double Bisection(double(*func)(double), double xLower, double xUpper, double xEPS = 1e-9, double yEPS = 1e-9);

如何通过减少参数数量将此CDF用作求解器的参数?

1 个答案:

答案 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