Transformacje kontenera (C++)

Ostatnio opisywałem jak kontener można wyświetlić, dziś powiem jak można kontener podać transformacji. Przykładowo każdy element w wewnątrz wektora pomnożyć przez 5 i wynik zwrócić do tego samego wektora.
Załóżmy że mamy wektor z takimi liczbami

1 2 3 4 5 6 7 8 9

I chcemy te każdą z tych liczb pomnożyć przez 5 w celu osiągnięcia takiego wyniku:

5 10 15 20 25 30 35 40 45

Najnajbardziej oczywistą rzeczą jest wykorzystanie funkcji transform znajdującej się w bibliotece <algorithm>. Trzeci parametr w funkcji transform służy do określenia miejsca do którego będą umieszczane wartości zwracane przez funkcję (tutaj to jest wyrażanie lambda)

transform(vec.begin(), vec.end(),vec.begin(),[] (int n){return 2*n;}); 

Jak widać wykorzystałem wyrażenie lambda (tylko VS 2010 i późniejsze). Po chwili zastonowienia, doszedłem do wniosku że można liczbę do wyrażenia lambda przekazać jako referencję, dzięki temu można wykorzystać funkcję for_each

for_each(vec.begin(), vec.end(),[] (int& n){n=2*n;});