指向一个参数较少的函数

Point to a function with less arguments

本文关键字:参数 函数 一个      更新时间:2023-10-16

我有一个有多个参数的基函数(myfunc)。我想在main函数中选择一些参数,然后调用一个例程(some_routine),它将使用其中的myfunc。

我想让

myfunc(1.,2.,x) turns to f(x)

有办法吗?

后面跟着示例代码

#include<iostream>
using namespace std;
//The function
double myfunc(double tau, double chi, double phi){
double value;
//complicated process using tau, chi and x to find value.
value = tau+chi+phi;//just to work
return value;
}
//The Routine
typedef double (*function_pointer)(double);
double some_routine(function_pointer f){
// process, like finding a minimum, using some generic funcion like f(x)
double value;
double x=10;
value = f(x)*f(x);//just to work
return value;
}
//The problem
int main(){
for(double i=0.;i<10;i+=.5){
    cout << some_routine(myfunc,i,i+.1) << endl;
}
//I would like to call like that. Declaring that in "some_routine" f(x):=myfunc(1,0,x)
return 0;
}

我在fortran中发现了一个类似的问题,但它是另一种语言…在c++中也有类似的情况,在这个问题中选择的参数只是一个"selector"

您需要使用std::bind。详情在这里http://en.cppreference.com/w/cpp/utility/functional/bind

auto f = std::bind(myfunc, args here)

则使用std::function作为方法

的数据类型