STD::for_each 跟for循环相比有什么优点吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (25)

STD::for_each 跟for循环相比有什么优点吗?

提问于
用户回答回答于

C++11如下:

for(auto it = collection.begin(); it != collection.end() ; ++it)
{
   foo(*it);
}

或者这个

for_each(collection.begin(), collection.end(), [](Element& e)
{
   foo(e);
});

for语法可用:

for(Element& e : collection)
{
   foo(e);
}
用户回答回答于

以下是一些原因:

  1. 仅仅因为您不习惯它和/或没有使用合适的工具来使它变得非常容易,它似乎就会阻碍可读性。(参见Boost::range和Boost::Bind/Boost::Lambda for Helpers。其中许多将进入C++0x,并使_)每一种和相关的功能都更有用。)
  2. 它允许您在for的基础上编写算法。_与任何迭代器一起工作的每个迭代器。
  3. 它减少了愚蠢的打字错误的机会。
  4. 它还为STL算法的其他部分打开了思路,如find_ifsortreplace等等,这些看起来就不再那么奇怪了。这可能是一场巨大的胜利。

扫码关注云+社区