C++ 如何从较大的函数创建较小的函数?

C++ 如何从较大的函数创建较小的函数?,c++,function,pointers,C++,Function,Pointers,假设我有一个函数int funcint x,int y,int z,我需要在另一个函数中调用它10次,即int rungeint,int funcint a,int b。 我知道我可以创建10个函数,即 int runge1(int a, int b) {return func(1, a, b);} 但是,我想要一个更简单的方法。 基本上,我想创建一个函数指针: for(int i=0; i<10; i++) { //func would have two variab

假设我有一个函数int funcint x,int y,int z,我需要在另一个函数中调用它10次,即int rungeint,int funcint a,int b。 我知道我可以创建10个函数,即

 int runge1(int a, int b) {return func(1, a, b);}
但是,我想要一个更简单的方法。 基本上,我想创建一个函数指针:

for(int i=0; i<10; i++)
    {
    //func would have two variables input into it, variable1, variable2
    int (*func)=func(i, variable1, variable2);
    }

根据你的描述,我不是100%确定,但看起来你是想利用这个功能


在C++中,有一个很好的例子:

根据你的描述,我不确定100%,但是看起来你在寻找函数。 在C++中,有一个很好的例子:

你在寻找:

如果愿意,可以将所有新绑定的函数推送到std::vector中:

如果您没有C++11,则有一个对应的版本。

您正在寻找:

如果愿意,可以将所有新绑定的函数推送到std::vector中:


如果您没有C++11,则会有一个对应的版本。

我很确定您想了解std::function、Lambdas以及std::bind:


我更喜欢lambdas,但这是口味的问题…

我很确定您想了解std::function、lambdas以及std::bind:


我更喜欢lambdas,但这是一个品味的问题…

对不起,您关于在另一个函数中调用函数*10次的示例根本无法说明问题。也许可以再扩展一点,即i=1,2,3。。。你的问题会变得更清楚。谢谢你的帮助,很抱歉我的问题不清楚。我需要等待一分钟才能接受正确的答案,但感谢您的帮助。对不起,您关于在另一个函数中调用函数*10次的示例根本无法说明问题。也许可以再扩展一点,即i=1,2,3。。。你的问题会变得更清楚。谢谢你的帮助,很抱歉我的问题不清楚。我需要等待一分钟来接受正确的答案,但感谢您的帮助。该示例非常旧,并且其中提到的绑定器已被新标准弃用,具有std::bind和lambdas。该示例非常旧,并且其中提到的绑定器已被新标准弃用,具有std::bind和lambdas。
std::function<int(int,int)> f = std::bind(&func, i, std::placeholders::_1, std::placeholders::_2);
f(1, 2);
using namespace std::placeholders;
std::vector<std::function<int(int,int)>> funcs;
for (int i = 0; i < 10; i++) {
  funcs.push_back(std::bind(&func, i, _1, _2));
}
int func(int x, int y, int z);

typedef std::function<int(int,int)> FuncT;
std::array<FuncT, 10> functions; //or whatever container suits your needs
for (int i = 0; i < 10; ++i)
{
  functions[i] = [=](int a, int b) { return func(i,a,b); }; //with lambdas
  functions[i] = std::bind(func, i, std::placeholders::_1, std::placeholders::_2); //with bind
}