logo

Базиран на диапазон for цикъл в C++

В тази тема ще обсъдим базирания на диапазон for цикъл в езика за програмиране C++. Езикът C++ въведе нова концепция за базиран на диапазон for цикъл в C++11 и по-нови версии, който е много по-добър от обикновения For цикъл. For цикълът, базиран на диапазон, не изисква голямо кодиране за прилагане на итерация на for цикъл. Това е последователен итератор, който повтаря всеки елемент от контейнера в диапазон (от началото до края).

Базиран на диапазон for цикъл в C++

Синтаксис

 for (range_declaration : range_expression ) loop statement 
    обхват_декларация:Използва се за деклариране на променлива, чийто тип е същият като типовете на събраните елементи, представени от range_expression или препратка към този тип.диапазон_израз:Той дефинира израз, който представлява подходящата последователност от елементи.изявление за цикъл:Той дефинира тялото на базирания на обхват for цикъл, който съдържа един или повече оператори, които трябва да се изпълняват многократно до края на израза на обхвата.

Забележка: Ако не знаем типа данни на елементите на контейнера, можем да използваме ключовата дума 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 цикъл

  1. Той е лесен за използване и синтаксисът му също е прост.
  2. Базиран на диапазон for цикъл не изисква изчисляване на броя на елементите в контейнери
  3. Той разпознава началните и крайните елементи на контейнерите.
  4. Можем лесно да променяме размера и елементите на контейнера.
  5. Той не създава никакво копие на елементите.
  6. Той е много по-бърз от традиционния for цикъл.
  7. Обикновено използва ключовата дума auto, за да разпознае типа данни на елементите на контейнера.

Недостатък на базирания на диапазон for цикъл

  1. Не може да обхожда част от списък.
  2. Не може да се използва за преминаване в обратен ред
  3. Не може да се използва в указатели.
  4. Не предлага индексиране на текущите елементи.