是否可以在std :: vector中保留函数指针?

时间:2014-10-01 03:38:27

标签: c++ pointers vector std

是否可以在std :: vector中保留函数指针?并在迭代器循环中调用每个函数?

参考:http://en.wikipedia.org/wiki/Function_pointer

2 个答案:

答案 0 :(得分:3)

  

是否可以将函数指针保存在std::vector

当然,只要它们都是同一类型:

void foo()
{
    std::cout << "inside foo\n";
}

void bar()
{
    std::cout << "inside bar\n";
}

void baz()
{
    std::cout << "inside baz\n";
}

std::vector<void(*)()> fps { foo, bar, baz };
  

并在迭代器循环中调用每个函数?

完全没问题:

for (auto&& fp : fps)
{
    fp();
}

答案 1 :(得分:1)

您可能还想考虑Boost Signals2库。您可以将任意数量的功能指针(AKA&#39;插槽&#39;)注册到一个&#39;信号&#39;并通过简单地调用“信号”来调用它们中的每一个。本身。该库负责管理函数指针列表,并根据需要迭代它们。