logo

Bucle for basat en rangs en C++

En aquest tema, parlarem del bucle for basat en intervals en el llenguatge de programació C++. El llenguatge C++ va introduir un nou concepte del bucle for basat en rangs en C++11 i versions posteriors, que és molt millor que el bucle For normal. Un bucle for basat en intervals no requereix una codificació gran per implementar la iteració del bucle. És un iterador seqüencial que va iterar cada element del contenidor en un interval (des del principi fins al final).

Bucle for basat en rangs en C++

Sintaxi

 for (range_declaration : range_expression ) loop statement 
    declaració_interval:S'utilitza per declarar una variable el tipus de la qual és el mateix que els tipus d'elements recollits representats per l'expression_range o referència a aquest tipus.expressió_interval:Defineix una expressió que representa la seqüència adequada d'elements.declaració de bucle:Defineix el cos del bucle for basat en l'interval que conté una o més declaracions que s'executaran repetidament fins al final de l'expressió interval.

Nota: si no coneixem el tipus de dades dels elements contenidor, podem utilitzar la paraula clau auto que identifica automàticament el tipus de dades de l'expressió_range.

Programa per imprimir cada element de la matriu utilitzant un interval basat en bucle for

Considerem un exemple per imprimir la matriu int i double utilitzant el bucle for basat en intervals en C++.

Java regex $

programa.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; } 

Sortida

 10 20 30 40 50 2.4 4.5 1.5 3.5 4.0 

Programa per demostrar el vector en rang basat en bucle for

Escrivim un programa senzill per implementar el vector en el rang basat en el bucle for.

Programa2.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; } 

Sortida

 5 10 25 20 25 

Programa per imprimir les matrius utilitzant el bucle for Range basat en C++ amb referència

Considerem un exemple per imprimir els elements de la matriu utilitzant el rang basat en el bucle en C++.

Programa 3.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; } 

Sortida

 Before updating the elements: 1 3 -2 4 6 7 9 After modification of the elements: 3 9 -6 12 18 21 27 

Bucle for basat en intervals nius

Quan es defineix un bucle dins del cos d'un altre bucle, el bucle s'anomena bucle for imbricat. De la mateixa manera, quan definim un rang en un bucle dins d'un altre bucle basat en intervals, la tècnica es coneix com a bucle for basat en intervals imbricats.

Sintaxi:

 for ( int x : range_expression) // outer loop { for ( int y : range_expression) // inner loop { // statement to be executed } // statement to be executed } 

A la sintaxi anterior, definim un bucle for basat en intervals dins d'un altre bucle. Aquí anomenem bucles for basats en rangs interiors i exteriors en C++.

Programa per imprimir el bucle for basat en un rang imbricat en C++

Considereu un exemple per demostrar l'interval imbricat basat en bucle for en llenguatge de programació C++.

Interval.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; } 

Sortida

 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 

Quina diferència hi ha entre el bucle for tradicional i el bucle for basat en rang?

A tradicional for loop s'utilitza per executar repetidament el bloc de codi fins que la condició especificada sigui certa. Un bucle for tradicional té tres paràmetres, inicialització de la variable, especificació de la condició i l'últim és un comptador que s'incrementa en un si la condició continua sent certa.

Sintaxi:

 for ( variable_initialization; specify_condition; updated_counter) { // statement to be executed; } 

Bucle basat en rangs

D'altra banda, tenim un nou bucle for basat en rang disponible a la versió C++ 11 i posterior. Té dos paràmetres, la declaració d'interval i l'expressió range_. També s'utilitza per executar repetidament el bloc de codi en un interval.

Sintaxi

protocol d'Internet smtp
 for ( range_declaration : range_ expression ) { loop _statement; // statement to be executed; } 

Range_declaration s'utilitza per declarar el tipus de variable relacionada amb range_expression (contenidor). El rang_expression: és com un contenidor que conté els mateixos tipus d'elements de manera seqüencial. Loop_statement defineix la instrucció que s'executa dins del bucle for.

Avantatges del bucle for basat en rang

  1. És fàcil d'utilitzar i la seva sintaxi també és senzilla.
  2. Un bucle for basat en intervals no requereix el càlcul del nombre d'elements en un contenidor
  3. Reconeix els elements inicials i finals dels contenidors.
  4. Podem modificar fàcilment la mida i els elements del contenidor.
  5. No crea cap còpia dels elements.
  6. És molt més ràpid que el bucle for tradicional.
  7. Normalment utilitza la paraula clau auto per reconèixer el tipus de dades dels elements del contenidor.

Desavantatge del bucle for basat en el rang

  1. No pot recórrer una part d'una llista.
  2. No es pot utilitzar per recórrer en ordre invers
  3. No es pot utilitzar en punters.
  4. No ofereix indexació dels elements actuals.