Нестандартная инициализация for [дубликат]

73
07 декабря 2021, 13:40
На этот вопрос уже даны ответы здесь:
Что значит for(int x : vector) (2 ответа)
Закрыт 2 года назад.

Когда изучал строки и векторы, наткнулся на вывод вектора таким образом

for(auto str : dictionary)
    std::cout << str << "\n";

или

for(std::string n : clangs)
    std::cout << n << "\t";

Как это работает?

Answer 1

Это пошло с нового стандарта C++11. Называется Range-For.

Перебираются все элементы контейнера, указанного справа от двоеточия.

Хорошие практики - использовать ссылки (чтобы не происходило копирование), auto (чтобы не загромождать декларации), и const (чтобы не стрелять себе по ногам).

Если не нужно изменять значения элементов:

for(const auto& i:data)
{
}

Если нужно изменять:

for(auto& i:data)
{
}
READ ALSO
Проблемы с тестом глубины OpenGL

Проблемы с тестом глубины OpenGL

Только начал заниматься с OpenGL и столкнулся с проблемами с тестом глубиныИспользую шейдеры для текстурированного GL_POLYGON и нескольких of GL_LINE_STRIP

93
Удаление букв из введённой строки

Удаление букв из введённой строки

Нужно ввести строку, затем удалить из неё все буквы А и ОПример кода:

254
Как обработать нажатия на стрелки С++

Как обработать нажатия на стрелки С++

Пишу простенькую игру и хочу сделать движение на стрелкиПытаюсь словить нажатую клавишу через _getch()

102
Получение размера данных C++

Получение размера данных C++

ВопросЕсть функция

80