编写接受可调用函数作为参数的函数定义

时间:2015-05-08 00:37:42

标签: c++ c++11

任何人都可以帮我编写接受STL容器和可调用函数的函数的定义。执行时,该函数将可调用对象应用于容器的每个元素?

1 个答案:

答案 0 :(得分:1)

这里有一些非常简单的事情:模板接受容器和函数的函数,然后在每个元素上调用函数:

template<typename C, typename F>
void CallCallable(C&& c, F&& f)
{
    for(auto&& element : c)
    {
        f(element);
    }
}

你可以像这样使用它:

std::vector<int> myVec{1,2,3,4,5,6};
// add 1 to each element
CallCallable(myVec, [](int& i){++i;});

Live Demo

当然这很简单,我对你想要的东西做了一些假设,但它完成了工作。 (希望比我聪明的人可以给你更好的东西:-))