Top.Mail.Ru
Ответы

Дано количество чисел - n. После этого через пробел вводятся эти n чисел. Их надо записать в массив. с++

Я нашёл решение с помощью вектора, но у меня вопрос: как оно работает? Что значит (auto& v : arr), и почему мы берём ссылку на несуществующую переменную? Как так получается, что числа вводятся именно через пробел?

123456
 int n; 
	 
cin >> n; 
 
vector<int> arr(n); 
for (auto& v : arr) { cin >> v; } 
Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Высший разум
4мес

Конструкция for (auto& v : arr) означает, что на каждой итерации цикла переменная v будет являться ссылкой на очередной элемент вектора arr: на первой итерации v - ссылка на arr[0], на второй итерации - на arr[1] и т.д. - пока не будут обработаны все элементы arr.

Тут нет никакой "несуществующей переменной", т.к. auto (и не только в заголовке цикла for) - это и есть создание переменной с автоматическим выводом её типа (тип переменной определяется типом инициализирующего переменную значения). Точно так же можно было написать:

1
 for (int &v : arr) 


Числа вводятся не "через пробел", а через любое кол-во пробельных символов: пробелов, табуляций, переводов строк и т.д. Детали работы ввода определяются стандартом C++.

Такая схема ввода чисел (не строк) используется во множестве языков программирования. Но она же создаёт проблемы, когда вперемешку вводятся числа и строки.

Аватар пользователя
Ученик
4мес

трудно