<p>I seem to be seeing more 'for' loops over iterators in questions &amp; answers here than I do for_each(), transform(), and the like.  Scott Meyers suggests that <a href="http://www.ddj.com/cpp/184401446" rel="noreferrer">stl algorithms are preferred</a>, or at least he did in 2001.  Of course, using them often means moving the loop body into a function or function object.  Some may feel this is an unacceptable complication, while others may feel it better breaks down the problem.</p>

<p>So... should STL algorithms be preferred over hand-rolled loops?</p>

It depends on:
Whether high-performance is required
The readability of the loop
Whether the algorithm is complex
If the loop isn't the bottleneck, and the algorithm is simple (like for_each), then for the current C++ standard, I'd prefer a hand-rolled loop for readability.  (Locality of logic is key.)
However, now that C++0x/C++11 is supported by some major compilers, I'd say use STL algorithms because they now allow lambda expressions — and thus the locality of the logic.