Я пытаюсь понять, почему мне нужно использовать ссылку в диапазоне для, чтобы следующее выражение применилось к элементам в векторе.
Код просто определяет вектор и инициализирует некоторые элементы, затем использует ранжирование для их возведения в квадрат и распечатывает выходные данные.
int main() {
vector<int> v1{1,2,3,4,5};
for (auto &i : v1)
i *= i;
for (auto i : v1)
cout << i << " ";
cout << endl;
}
Вышеуказанное работает, но если для первого ранжирования я использую:
for (auto i : v1)
элементы тогда не возводятся в квадрат. Какая здесь разница? Я не понимаю необходимости использовать ссылку в этом случае, но не позже, когда я захочу установить каждый элемент, используя другой ранжированный для.