C++. Цикл for each. Range-based циклы.

Цикл for each. Range-based циклы.

Циклы, основанные на диапазонах.
Цикл предназначен для контейнеров и итерирования по элементам контейнера и перебирать коллекцию элементов.

В районе 11 стандарта С++ приняли новый вид цикла foreach, до этого IDE создали свои варианты цикла.

foreach (var, container) //QtCreator
    {   

    }
for each (var in container) //Microsoft Visual Studio
    {
        
    }

Также существует цикл по стандарту C++ (рекомендуемый к использованию)

    for (var : container)
    {
        //code with var
    }

Например:


int Arr[]={1,2,3};
for (int var : Arr)
    {
        cout<<var<<endl;
    }

var – переменная, куда будут записываться элементы контейнера, контейнер – собственно сам контейнер/класс и тд.
Цикл сам отслеживает элементы в контейнере, перебирая их все.

Главный минус – значения элементов КОПИРУЮТСЯ/ПЕРЕДАЮТСЯ ПО ЗНАЧЕНИЮ.

Можно получать элементы по ссылке:
Например:

int Arr[]={1,2,3};
for (int &var : Arr)
    {
        cout<<var<<endl;
    }

Можно использовать и константную буферную переменную

int Arr[]={1,2,3};
for (const int &var : Arr)
    {
        cout<<var<<endl;
    }
    for (const auto &var : Mylist)
    {
        cout<<var<<endl;
    }

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *