У цьому підручнику ми дізнаємося про діапазон C ++ для циклів та його найкращі практики за допомогою прикладів.
C ++ 11 представив діапазонний for
цикл. Цей for
цикл спеціально використовується з колекціями, такими як масиви та вектори .
Наприклад,
// initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )
Тут діапазонний for
цикл повторює масив num від початку до кінця. int
Мінлива змінна зберігає значення елемента масиву в кожній ітерації.
Його синтаксис:
for (rangeDeclaration : rangeExpression) ( // code )
У наведеному вище прикладі
- rangeDeclaration -
int var
- rangeExpression - число

Приклад 1: Діапазон для циклу з використанням масиву
#include using namespace std; int main() ( // initialize array int numArray() = (1, 2, 3, 4, 5); // use of ranged for loop to print array elements for (int n : numArray) ( cout << n << " "; ) return 0; )
Вихідні дані
1 2 3 4 5
У цьому прикладі ми оголосили та ініціалізували int
масив з іменем numArray. Тут ми використали for
цикл ranged для роздрукування елементів numArray.
- перша ітерація - n приймає значення першого члена масиву, що є
1
- друга ітерація - n приймає значення,
2
а потім друкується тощо.
Примітка: Цикл діапазону for автоматично повторює масив від початку до кінця. Нам не потрібно вказувати кількість ітерацій у циклі.
Приклад 2: Діапазон С ++ для циклу з використанням вектора
#include #include using namespace std; int main() ( // declare and initialize vector vector num_vector = (1, 2, 3, 4, 5); // print vector elements for (int n : num_vector) ( cout << n << " "; ) return 0; )
Вихідні дані
1 2 3 4 5
Приклад 3: Оголосіть колекцію всередині петлі
#include using namespace std; int main() ( // define the collection in the loop itself for (int n : (1, 2, 3, 4, 5)) ( cout << n << " "; ) return 0; )
Вихідні дані
1 2 3 4 5
Тут ми оголосили колекцію в самому циклі, тобто
rangeExpression = (1, 2, 3, 4, 5)
Це також допустимий спосіб використання for
циклу діапазону , і він працює так само, як і тоді, коли ми використовуємо фактичний масив або вектор.
C ++ - рейтинг найкращих практик циклу
У наведених вище прикладах ми оголосили змінну в for
циклі для зберігання кожного елемента колекції в кожній ітерації.
int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )
Однак краще написати діапазон на основі циклу так:
// access memory location of elements of num for (int &var : num) ( // code )
Зверніть увагу на використання &
перед var. Ось,
int var : num
- Копіює кожен елемент num до змінної var у кожній ітерації. Це погано для пам’яті комп’ютера.int &var : num
- Не копіює кожен елемент num у var. Натомість отримує доступ до елементів num безпосередньо з самого num. Це ефективніше.
Примітка:&
оператор відомий в якості опорного оператора. Ми дізнаємось більше про це в покажчиках на C ++.

Примітка: Якщо ми не змінюємо масив / вектор / колекцію в межах циклу, краще використовувати const
ключове слово в оголошенні діапазону.
// collection is not modified in the loop for (const int &var : num) ( // code )