Используя изменяемый подход, мы можем использовать for_each
для непосредственного обновления элементов последовательности посредством ссылок.
for_each(begin(myv1), end(myv1), [](double& a) { a *= 3; });
Происходят споры о том, действительно ли
for_each
разрешено изменять элементы, так как это называется "не мутирующим" алгоритмом.
Это означает, что for_each
не разрешено изменять последовательность , с которой он работает (это относится к изменениям последовательности структура - т.е. делает итераторы недействительными). Это не означает, что мы не можем модифицировать неконстантные элементы вектора как обычно - сама структура не затрагивается этими операциями.