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

C++ 编写接受可调用函数作为参数的函数定义,c++,c++11,C++,C++11,有谁能帮我写一个接受STL容器和可调用函数的函数的定义吗。执行此函数时,会将可调用对象应用于容器的每个元素?这里有一个非常简单的方法:模板化函数以接受容器和函数,然后对每个元素调用函数: template<typename C, typename F> void CallCallable(C&& c, F&& f) { for(auto&& element : c) { f(element); }

有谁能帮我写一个接受STL容器和可调用函数的函数的定义吗。执行此函数时,会将可调用对象应用于容器的每个元素?

这里有一个非常简单的方法:模板化函数以接受容器和函数,然后对每个元素调用函数:

template<typename C, typename F>
void CallCallable(C&& c, F&& f)
{
    for(auto&& element : c)
    {
        f(element);
    }
}
模板
无效可调用(C&&C,F&&F)
{
用于(自动和元素:c)
{
f(要素);
}
}
您可以这样使用它:

std::vector<int> myVec{1,2,3,4,5,6};
// add 1 to each element
CallCallable(myVec, [](int& i){++i;});
std::vector myVec{1,2,3,4,5,6};
//向每个元素添加1
可调用(myVec,[](int&i){++i;});


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

有什么回报吗?对于每个来说,
唯一的错误是需要迭代器,而不是容器吗?你试过什么,哪里出了问题?你也可以用。@JesseGood:同意。谢谢你的回复。现在还有
std::for_each
,但OP似乎想玩自己写的游戏,所以这就是我拍摄的目的。