指向具有特定参数的函数的指针的c ++向量
c++ vector of pointers to functions with specific parameters
如果我有一个函数并且我想用一个特定的参数指向它,我可以使用 auto 但像这样:
void bar(int n){std::cout << n;}
auto foo = std::bind(bar, 2);
但是如果我想制作这些指针的向量它不起作用
std::vector<auto> v;
您可以编写 vector<decltype(foo)> v;
,尽管这可能不会满足您的要求(其他 bind
表达式可能会给出不兼容的类型)。
正如评论中提到的,std::function
是为此目的而设计的:
std::vector< std::function<void()> > v;
v.emplace_back( foo );
v.emplace_back( std::bind(bar, 2) );
v.emplace_back( []{ std::cout << 2; } );
如果我有一个函数并且我想用一个特定的参数指向它,我可以使用 auto 但像这样:
void bar(int n){std::cout << n;}
auto foo = std::bind(bar, 2);
但是如果我想制作这些指针的向量它不起作用
std::vector<auto> v;
您可以编写 vector<decltype(foo)> v;
,尽管这可能不会满足您的要求(其他 bind
表达式可能会给出不兼容的类型)。
正如评论中提到的,std::function
是为此目的而设计的:
std::vector< std::function<void()> > v;
v.emplace_back( foo );
v.emplace_back( std::bind(bar, 2) );
v.emplace_back( []{ std::cout << 2; } );