Цикл for на основі діапазону

В стандарті мови С++ 11 (діє з 2011 року) з’явився новий вид циклу range-based for або цикл for на основі діапазону. Цей вид циклу призначений для перебору елементів колекцій, наприклад,  масиву або контейнерів (vector, string та ін.).

Синтаксис циклу:

Наприклад, наступний код дозволяє вивести на екран елементи масива arr:

Тут el – змінна, яка послідовно приймає значення від першого до останнього елементу масива arr  . Розмір масиву вказувати не потрібно,  цикл ніколи не вийде за межі діапазону.

При кожній ітерації в змінну el копіюється поточний елемент масиву, тому всі дії, які відбуваються зі змінною відбуваються з копіями елементів масиву, а не з самими елементами. Для зміни вихідного масиву необхідно використовувати посилальний тип даних для змінної el.

Наприклад, наступний код змінить всі елементи масиву arr  на 0:

В цьому випадку замість копії елементу використовується посилання на сам елемент.

Використання посилального типу може бути корисним і при виведенні елементів для економії пам’яті та підвищення продуктивності, наприклад, якщо розмір елементу великий, то при використанні посилального типу, копіювання не відбувається. Але в цьому випадку є ймовірність випадково змінити масив. Щоб захистити елементи масиву від зміни необхідно зробити елемент константним. Наприклад:

 

 

1+

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *