У цій темі ми обговоримо цикл for на основі діапазону в мові програмування C++. Мова C++ представила нову концепцію циклу for на основі діапазону в C++11 і пізніших версіях, яка є набагато кращою, ніж звичайний цикл For. Цикл for на основі діапазону не вимагає великого кодування для реалізації ітерації циклу for. Це послідовний ітератор, який повторює кожен елемент контейнера в діапазоні (від початку до кінця).
Синтаксис
for (range_declaration : range_expression ) loop statement
Примітка. Якщо ми не знаємо тип даних елементів контейнера, ми можемо використати ключове слово auto, яке автоматично визначає тип даних діапазону_виразу.
Програма для друку кожного елемента масиву з використанням діапазону на основі циклу for
Давайте розглянемо приклад друку масиву int і double за допомогою циклу for на основі діапазону в C++.
program.cpp
генерувати випадкове число в java
#include using namespace std; int main () { int arr1 [5] = { 10, 20, 30, 40, 50}; double darr [5] = { 2.4, 4.5, 1.5, 3.5, 4.0 }; // use range based for loop for ( const auto &var : arr1 ) { cout << var << ' ' ; } // use auto keyword to automatically specify the data type of darr container. for ( const auto &var : darr ) { cout << var << ' ' ; } return 0; }
Вихід
10 20 30 40 50 2.4 4.5 1.5 3.5 4.0
Програма для демонстрації вектора в діапазоні на основі циклу for
Давайте напишемо просту програму для реалізації вектора в діапазоні на основі циклу for.
Program2.cpp
#include #include using namespace std; int main() { int x; // declare integer variable // declare vector variable vector vect = {5, 10 , 25, 20, 25}; // display vector elements for ( int x : vect) { cout << x << ' '; } return 0; }
Вихід
5 10 25 20 25
Програма для друку масивів за допомогою циклу for Range на основі C++ із посиланням
Давайте розглянемо приклад друку елементів масиву за допомогою циклу for на основі діапазону в C++.
Program3.cpp
#include #include #include using namespace std; int main(){ array data = {1, 3, -2, 4, 6, 7, 9}; cout << ' Before updating the elements: ' << endl; for (int x : data){ cout << x << ' '; } // pass the references for (int &itemRef : data){ itemRef *= 3; } cout << endl << ' After modification of the elements: ' << endl; for (int x : data){ cout << x << ' '; } cout << endl; return 0; }
Вихід
Before updating the elements: 1 3 -2 4 6 7 9 After modification of the elements: 3 9 -6 12 18 21 27
Вкладений цикл for на основі діапазону
Коли цикл визначено всередині тіла іншого циклу, цей цикл називається вкладеним циклом for. Так само, коли ми визначаємо діапазон у циклі всередині іншого циклу на основі діапазону, ця техніка відома як вкладений цикл for на основі діапазону.
віртуальна машина java
Синтаксис:
for ( int x : range_expression) // outer loop { for ( int y : range_expression) // inner loop { // statement to be executed } // statement to be executed }
У наведеному вище синтаксисі ми визначаємо один цикл for на основі діапазону всередині іншого циклу. Тут ми називаємо внутрішній і зовнішній цикл for на основі діапазону в C++.
Програма для друку вкладеного циклу for на основі діапазону в C++
Розглянемо приклад, щоб продемонструвати вкладений діапазон на основі циклу for у мові програмування C++.
Range.cpp
#include using namespace std; int main () { int arr1[4] = { 0, 1, 2, 3 }; int arr2[5] = { 1, 2, 3, 4, 5 }; // use nested range based for loop for ( int x : arr1 ) { // declare nested loop for ( int y : arr2 ) { cout << ' x = ' << x << ' and j = ' << y << endl; } } return 0; }
Вихід
x = 0 and j = 1 x = 0 and j = 2 x = 0 and j = 3 x = 0 and j = 4 x = 0 and j = 5 x = 1 and j = 1 x = 1 and j = 2 x = 1 and j = 3 x = 1 and j = 4 x = 1 and j = 5 x = 2 and j = 1 x = 2 and j = 2 x = 2 and j = 3 x = 2 and j = 4 x = 2 and j = 5 x = 3 and j = 1 x = 3 and j = 2 x = 3 and j = 3 x = 3 and j = 4 x = 3 and j = 5
Яка різниця між традиційним циклом for і циклом for на основі діапазону?
А традиційний цикл for використовується для багаторазового виконання блоку коду, доки задана умова не стане істинною. Традиційний цикл for має три параметри: ініціалізацію змінної, вказівку умови та останній параметр – лічильник, який збільшується на одиницю, якщо умова залишається вірною.
Синтаксис:
скільки міст у нас
for ( variable_initialization; specify_condition; updated_counter) { // statement to be executed; }
Цикл на основі діапазону
З іншого боку, у C++ 11 і пізніших версіях доступний новий цикл for на основі діапазону. Він має два параметри: оголошення діапазону та вираз діапазон_. Він також використовується для багаторазового виконання блоку коду в діапазоні.
Синтаксис
for ( range_declaration : range_ expression ) { loop _statement; // statement to be executed; }
Оголошення діапазону використовується для оголошення типу змінної, пов’язаної з виразом діапазону (контейнер). Вираз_діапазону: це як контейнер, який містить ті самі типи елементів у послідовному порядку. loop_statement визначає оператор, який виконується всередині циклу for.
Переваги циклу for на основі діапазону
- Він простий у використанні, і його синтаксис також простий.
- Цикл for на основі діапазону не потребує обчислення кількості елементів у контейнерах
- Він розпізнає початкові та кінцеві елементи контейнерів.
- Ми можемо легко змінити розмір і елементи контейнера.
- Він не створює жодних копій елементів.
- Це набагато швидше, ніж традиційний цикл for.
- Зазвичай він використовує ключове слово auto для розпізнавання типу даних елементів контейнера.
Недолік циклу for на основі діапазону
- Він не може проходити частину списку.
- Його не можна використовувати для проходження у зворотному порядку
- Його не можна використовувати в покажчиках.
- Він не пропонує індексувати поточні елементи.