C++ c++;作为类方法的参数传递的函数的向量

C++ c++;作为类方法的参数传递的函数的向量,c++,function,class,pointers,stdvector,C++,Function,Class,Pointers,Stdvector,(1) 如何创建函数的std::vector,以便执行以下操作: int main () { std::vector<????> vector_of_functions; // Add an adding function into the vector vector_of_functions.push_back( double function (double a, double b) { return a + b

(1) 如何创建函数的std::vector,以便执行以下操作:

int main ()
{
    std::vector<????> vector_of_functions;
    // Add an adding function into the vector
    vector_of_functions.push_back(
        double function (double a, double b) {
            return a + b
        }
    );
    // Add a multiplying function into the vector
    vector_of_functions.push_back(
        double function (double a, double b) {
            return a * b;
        }
    );

    //  Use the functions
    std::cout << "5 + 7 = " << vector_of_functions[0](5, 7); // >>> 5 + 7 = 12
    std::cout << "5 * 7 = " << vector_of_functions[1](5, 7); // >>> 5 * 7 = 35

    return 0;
}
class ClassName {
    public:
        ClassName();
        void func(????);
}

使用
std::function
作为向量的模板参数,然后使用
std::function
对象或可以转换为
std::function
的对象,例如lamda:example
[](双a,双b)->双{返回a+b;}

使用
std::function
作为向量的模板参数,然后使用
std::function
对象或可以转换为
std::function
的对象,例如lamda:example
[](双a,双b)->双{返回a+b;}
如果可以使用C++11+,则不能使用和,或者

比如说:

using func = std::function<double(double, double)>;
using vfuncs = std::vector<func>;

vfuncs vf;
vf.push_back([](double first, double second) { return first + second; });
vf.push_back([](double first, double second) { return first * second; });
/* obj is some function, which member function you want to call */
vf.push_back([&obj](double first, double second) { return obj.op(first, second); });
使用func=std::function;
使用vfuncs=std::vector;
vfuncs-vf;
vf.push_back([](双第一,双第二){return first+second;});
vf.push_back([](双第一,双第二){return first*second;});
/*obj是某个函数,您要调用哪个成员函数*/
vf.push_back([&obj](双第一,双第二){return obj.op(第一,第二);});

如果可以使用C++11+,则不能使用and或

比如说:

using func = std::function<double(double, double)>;
using vfuncs = std::vector<func>;

vfuncs vf;
vf.push_back([](double first, double second) { return first + second; });
vf.push_back([](double first, double second) { return first * second; });
/* obj is some function, which member function you want to call */
vf.push_back([&obj](double first, double second) { return obj.op(first, second); });
使用func=std::function;
使用vfuncs=std::vector;
vfuncs-vf;
vf.push_back([](双第一,双第二){return first+second;});
vf.push_back([](双第一,双第二){return first*second;});
/*obj是某个函数,您要调用哪个成员函数*/
vf.push_back([&obj](双第一,双第二){return obj.op(第一,第二);});

看看
std::function
std::bind
使用和,卢克!看看
std::function
std::bind
使用和,卢克!这比我的答案好,应该接受。谢谢。当我使用vfuncs=std::vector更改
时,这就起作用了
std::vector vfuncs这比我的答案好,应该接受。谢谢。当我使用vfuncs=std::vector更改
时,这就起作用了
std::vector vfuncs