与for_each(),transform()等相比,我似乎在此处的问题与答案中看到更多的“ for”循环。Scott Meyers建议使用stl算法,或者至少在2001年使用过。当然,使用它们通常意味着将循环体移动到函数或函数对象中。有些人可能认为这是不可接受的并发症,而另一些人可能认为这可以更好地解决问题。
那么… STL算法是否应该比手动循环更受青睐?
这取决于:
如果循环不是瓶颈,并且算法很简单(例如for_each),那么对于当前的C ++标准,我希望使用手动滚动循环以提高可读性。(逻辑的局部性是关键。)
但是,现在一些主要的编译器支持C 0x / C 11,我想说要使用STL算法,因为它们现在允许使用lambda表达式,因此也支持逻辑的局部性。