Дано количество чисел - n. После этого через пробел вводятся эти n чисел. Их надо записать в массив. с++
Я нашёл решение с помощью вектора, но у меня вопрос: как оно работает? Что значит (auto& v : arr), и почему мы берём ссылку на несуществующую переменную? Как так получается, что числа вводятся именно через пробел?
int n;
cin >> n;
vector<int> arr(n);
for (auto& v : arr) { cin >> v; }
Конструкция for (auto& v : arr) означает, что на каждой итерации цикла переменная v будет являться ссылкой на очередной элемент вектора arr: на первой итерации v - ссылка на arr[0], на второй итерации - на arr[1] и т.д. - пока не будут обработаны все элементы arr.
Тут нет никакой "несуществующей переменной", т.к. auto (и не только в заголовке цикла for) - это и есть создание переменной с автоматическим выводом её типа (тип переменной определяется типом инициализирующего переменную значения). Точно так же можно было написать:
for (int &v : arr)
Числа вводятся не "через пробел", а через любое кол-во пробельных символов: пробелов, табуляций, переводов строк и т.д. Детали работы ввода определяются стандартом C++.
Такая схема ввода чисел (не строк) используется во множестве языков программирования. Но она же создаёт проблемы, когда вперемешку вводятся числа и строки.
трудно