当前位置:  开发笔记 > 编程语言 > 正文

在容器中的每个元素上调用成员函数

如何解决《在容器中的每个元素上调用成员函数》经验,为你挑选了2个好方法。

这个问题是一个风格问题,因为你总是可以写一个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)如果您决定更改基本类型/容器类型,更少的更改.

编辑:谢谢你的帮助,现在,如果我想将一些参数传递给成员函数怎么办?



1> dirkgently..:
 #include   // for_each
 #include  // bind

 // ...

 std::for_each(container.begin(), container.end(), 
                   std::bind(&Type::func));

std::for_eachstd::bind对细节的文档.

错过了您的编辑:无论如何,这里是另一种实现您想要的方式而不使用Boost,如果需要的话:

std::for_each(foo_vector.begin(), foo_vector.end(),
    std::bind(&Foo::func, std::placeholders::_1));



2> Brian R. Bon..:

你可以使用std :: for_each或boost的foreach结构.

当您不想将逻辑移动到另一个函数时,请使用boost的BOOST_FOREACH或BOOST_REVERSE_FOREACH.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有