一尘不染

与手动滚动循环相比,应该使用STL算法吗?

algorithm

与for_each(),transform()等相比,我似乎在此处的问题与答案中看到更多的“ for”循环。Scott
Meyers建议使用stl算法,或者至少在2001年使用过。当然,使用它们通常意味着将循环体移动到函数或函数对象中。有些人可能认为这是不可接受的并发症,而另一些人可能认为这可以更好地解决问题。

那么… STL算法是否应该比手动循环更受青睐?


阅读 244

收藏
2020-07-28

共1个答案

一尘不染

这取决于:

  • 是否需要高性能
  • 循环的可读性
  • 算法是否复杂

如果循环不是瓶颈,并且算法很简单(例如for_each),那么对于当前的C ++标准,我希望使用手动滚动循环以提高可读性。(逻辑的局部性是关键。)

但是,现在一些主要的编译器支持C 0x / C 11,我想说要使用STL算法,因为它们现在允许使用lambda表达式,因此也支持逻辑的局部性。

2020-07-28