В тази тема ще обсъдим базирания на диапазон for цикъл в езика за програмиране C++. Езикът C++ въведе нова концепция за базиран на диапазон for цикъл в C++11 и по-нови версии, който е много по-добър от обикновения For цикъл. For цикълът, базиран на диапазон, не изисква голямо кодиране за прилагане на итерация на for цикъл. Това е последователен итератор, който повтаря всеки елемент от контейнера в диапазон (от началото до края).
Синтаксис
for (range_declaration : range_expression ) loop statement
Забележка: Ако не знаем типа данни на елементите на контейнера, можем да използваме ключовата дума auto, която автоматично идентифицира типа данни на range_expression.
Програма за отпечатване на всеки елемент от масива с помощта на диапазон, базиран на цикъл for
Нека разгледаме пример за отпечатване на масива int и double с помощта на базирания на диапазон for цикъл в C++.
program.cpp
#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.
изберете много таблица sql
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
Програма за отпечатване на масивите с помощта на Range базиран for цикъл в 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; }
Изход
опитайте catch в java
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, базиран на диапазон.
Синтаксис:
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; }
Цикъл, базиран на обхват
От друга страна, имаме нов базиран на диапазон for цикъл, наличен в C++ 11 и по-нова версия. Има два параметъра, декларация за диапазон и израз за диапазон_. Използва се и за многократно изпълнение на блока от код в диапазон.
html тагове
Синтаксис
for ( range_declaration : range_ expression ) { loop _statement; // statement to be executed; }
Rang_declaration се използва за деклариране на типа променлива, свързана с range_expression (контейнер). Rang_expression: Той е точно като контейнер, който съдържа същите типове елементи по последователен начин. loop_statement дефинира оператора, който се изпълнява в for цикъл.
Предимства на базирания на диапазон for цикъл
- Той е лесен за използване и синтаксисът му също е прост.
- Базиран на диапазон for цикъл не изисква изчисляване на броя на елементите в контейнери
- Той разпознава началните и крайните елементи на контейнерите.
- Можем лесно да променяме размера и елементите на контейнера.
- Той не създава никакво копие на елементите.
- Той е много по-бърз от традиционния for цикъл.
- Обикновено използва ключовата дума auto, за да разпознае типа данни на елементите на контейнера.
Недостатък на базирания на диапазон for цикъл
- Не може да обхожда част от списък.
- Не може да се използва за преминаване в обратен ред
- Не може да се използва в указатели.
- Не предлага индексиране на текущите елементи.