У цьому підручнику ми дізнаємося про діапазон 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 - число
Працює цикл ranged for в C ++
Приклад 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 ++.
Робота адреси, що вказує на C ++, варіюється для циклу
Примітка: Якщо ми не змінюємо масив / вектор / колекцію в межах циклу, краще використовувати constключове слово в оголошенні діапазону.
// collection is not modified in the loop for (const int &var : num) ( // code )








