vector<string> names {"Larry", "Moe", "Curly"};
for (auto str: names)
str = "Funny";
Это не меняет содержимое исходного вектора ...
for (auto &str: names)
str = "Funny";
В то время как это делает ...
Так же как для l oop создать скопировать и затем l oop поверх этой копии?