Нет, первый цикл не делает глубокую копию world
в целом, , но на каждой итерации, элемент из world
копируется в a
.
Если вы хотите внести изменения в a
и сделать так, чтобы они влияли на исходную коллекцию, вы обычно хотите объявить a
в качестве ссылки:
std::vector<int> world;
// add 2 to each item in `world`:
for( auto &a : world )
a += 2;
В этом случае a
- этоссылка на элемент в world
, поэтому добавление к нему изменяет элемент в world
.