【发布时间】:2015-01-11 23:11:54
【问题描述】:
我知道从历史上看,最好使用标准算法,例如 for_each,而不是 for 循环,因为它们更具可读性。但我只是觉得使用 c++11 的常规 for 循环比具有相应回调函子的众多标准算法要简洁得多。
我这样想有错吗?许多标准算法已经过时了吗?这些方法有哪些不同的好处?
【问题讨论】:
-
当并行 stl 成为标准时,for_each 将是可并行化的。库结构有时允许比单独的语言功能更多的抽象。所以我认为出于这个原因 for_each 在迁移代码时可能会更好。
-
@GermánDiago 标准中有什么东西可以防止 range-for-loops 的并行化吗?我希望该标准要求“如同常规 for 循环”,但保留实现细节(包括并行化)。
-
据我所知循环将由实现定义?其实我从来没想过。我所知道的是,您可以使用并行 stl 保证并行化,那么当您可以拥有更安全的东西时,为什么还要依赖实现呢?
-
@GermánDiago 我现在明白你的意思了,谢谢你的澄清。
-
你可以
break一个for循环,而你不能break一个for_each,所以它们不是100%等效的。我会尽可能使用for_each。