这个问题是一个风格问题,因为你总是可以写一个for循环或类似的东西; 然而,是否有一个不那么突兀的STL或BOOST相当于写作:
for (container::iterator iter = cointainer.begin(); iter != cointainer.end(); iter++) iter->func();
?
像(想象)这样的东西:
call_for_each(container.begin(), container.end(), &Type::func);
我认为这将是1)减少打字,2)更容易阅读,3)如果您决定更改基本类型/容器类型,更少的更改.
编辑:谢谢你的帮助,现在,如果我想将一些参数传递给成员函数怎么办?
#include// for_each #include // bind // ... std::for_each(container.begin(), container.end(), std::bind(&Type::func));
见std::for_each
和std::bind
对细节的文档.
错过了您的编辑:无论如何,这里是另一种实现您想要的方式而不使用Boost,如果需要的话:
std::for_each(foo_vector.begin(), foo_vector.end(), std::bind(&Foo::func, std::placeholders::_1));
你可以使用std :: for_each或boost的foreach结构.
当您不想将逻辑移动到另一个函数时,请使用boost的BOOST_FOREACH或BOOST_REVERSE_FOREACH.