>>643
for each (range based for)でいいじゃん。

for (auto& item : collection)
{
// print an item
}

クロージャ風がいいなら、
std::for_each(collection.end(), collection.begin(), [](auto& item){ /* print */}

アイテレーターが登場するけど昔の名残みたいなもんで、
本質じゃないだろ?(範囲を指定してるだけ)