gpt4 book ai didi

c++11 - 调用容器中的所有仿函数

转载 作者:行者123 更新时间:2023-12-03 08:00:10 26 4
gpt4 key购买 nike

我有一系列 std::function 对象(一种非常原始的信号系统形式)。是否有一个标准的(在 C++0x 中)函数或仿函数会调用给定的 std::function?现在我用

std::for_each(c.begin(), c.end(), 
std::mem_fn(&std::function<void ()>::operator()));

恕我直言 std::mem_fn(&std::function<void ()>::operator())很丑。我希望能够写作

std::for_each(c.begin(), c.end(), funcall);

有没有这样的funcall ?或者我可以实现一个功能

template<typename I>
void callInSequence(I from, I to)
{
for (; from != to; ++from) (*from)();
}

或者我可能必须使用信号/槽系统,例如 Boost::Signals,但我觉得这是一种矫枉过正(我在这里不需要多线程支持,所有 std::function 都是使用 std 构造的::绑定(bind))。

最佳答案

我不知道有任何应用函数。但是,在 C++0x 中,您可以使用 lambda 并编写以下内容。

std::for_each(c.begin(), c.end(),
[](std::function<void ()> const & fn) { fn(); });

或者,您可以使用新的 for 循环。

for (auto const & fn: c)
fn();

关于c++11 - 调用容器中的所有仿函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4460368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com