C++ c++;作为类方法的参数传递的函数的向量
(1) 如何创建函数的std::vector,以便执行以下操作: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
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代码>