指向具有特定参数的函数的指针的c++ vector

标签 c++ pointers vector auto

如果我有一个函数并且我想用一个特定的参数指向它,我可以使用 auto 但像这样:

void bar(int n){std::cout << n;}
auto foo = std::bind(bar, 2);

但是如果我想用这些指针做一个 vector ,那是行不通的

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; } );

关于指向具有特定参数的函数的指针的c++ vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36585911/

相关文章:

c++ - 预编译 header 的问题?

vector - 在 common lisp 中查找字符串向量中元素的位置

c++ - 来自聚合类的对象 vector 中的 Push_back

c - 带有指针的意外 C 行为

c++ - 在p=new string[0]和p=new int[0]之后,为什么string版本在delete[] p时会崩溃?

php - 在数组 var_dump 末尾添加 & 号

C++11 vector push_back 不明确

C++ 使用静态关键字或索引模板处理许多派生类

c++ - 如何防止用户破坏对象

c++ - 使用变量初始化缓冲区数组的长度