Wyświetlanie klasy Vector (i innych kontenerów), bez użycia pętli

Ostatnio zgłębiam wiedzę odnośnie możliwości zawartych w STL’u. Jedna rzecz która mi się bardzo spodobała to porzucenie wykorzystywania klasycznych pętli a wykorzystanie funkcji które posiadają w sobie uniwersalne algorytmy.
W starym stylu pomyślał bym o takim czymś:
for(vector<int>::iterator it=vec.begin(); it != vec.end(); ++it)
{
cout << *it << " ";
}

Rzuca się konieczność utworzenia makabrycznie długiego w zapisie iteratora, później trzeba pamętać o wykorzystaniu * aby uzyskać wartość pod iteratorem.

Można go zastąpić jedną linijką (co jest zgodne z VS 2008):

copy(vec.begin(), vec.end(), ostream_iterator<int>(cout," "));

lub dla chcących wykorzystać lambdy (ponownie tylko w VS 2010) mogą skorzystać z for_each:

for_each(vec.begin(), vec.end(),[](int x) {cout << x << " ";});

Czy warto zmieniać kod na nowy styl, zgodny z duchem C++11?

Tak, to przyszłość.