Создает ли для l oop копию векторов, массивов или любых других типов данных в c ++? - PullRequest
0 голосов
/ 04 апреля 2020
vector<string> names {"Larry", "Moe", "Curly"};

for (auto str: names)     
        str = "Funny";  

Это не меняет содержимое исходного вектора ...

for (auto &str: names)  
        str = "Funny";

В то время как это делает ...

Так же как для l oop создать скопировать и затем l oop поверх этой копии?

1 Ответ

1 голос
/ 04 апреля 2020

Первый for-l oop создает копии значений, аналогично передаче по значению .

Второй принимает ссылку значений используя &, который изменит значения полностью (а не только внутри тела l oop), аналогично концепции передачи по ссылке .

Так создает ли для l oop копию, а затем l oop поверх этой копии?

Для первой - да.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...