Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

Нумерация в range-based цикле для массива

#cpp #cpp11


Код:

int arr[5] = { 1, 2, 3, 4, 5 };
for (auto i: arr) std::cout << "i" << "\n";


Вопрос, почему нумерация идет с единицы, а не с нуля? Как-то это неправильно выглядит,
не говоря уже о том что цикл уходит за пределы массива. Как использовать range-based
цикл для массива чтобы нумерация была с нуля, а не с единицы?
    


Ответы

Ответ 1



Конструкция for (auto i: container) поочередно перебирает элементы контейнера, а не индексы, и применима даже там, где нет понятия индекса - например, в хеш-таблице. Это выражение можно рассматривать как разворачивающееся в for(auto iterator = begin(container); iterator != end(container); ++iterator) { auto i = *iterator;

Комментариев нет:

Отправить комментарий