logo

Rækkebaseret for loop i C++

I dette emne vil vi diskutere den rækkevidde-baserede for loop i C++ programmeringssproget. C++-sproget introducerede et nyt koncept for det områdebaserede for loop i C++11 og senere versioner, hvilket er meget bedre end det almindelige For-loop. En rækkebaseret for loop kræver ikke stor kodning for at implementere til loop iteration. Det er en sekventiel iterator, der itererede hvert element i beholderen over et interval (fra start til slut).

Rækkebaseret for loop i C++

Syntaks

 for (range_declaration : range_expression ) loop statement 
    range_declaration:Det bruges til at erklære en variabel, hvis type er den samme som typerne af de indsamlede elementer repræsenteret af range_expression eller reference til den type.range_expression:Det definerer et udtryk, der repræsenterer den passende sekvens af elementer.loop statement:Det definerer brødteksten af ​​den områdebaserede for-løkke, der indeholder en eller flere sætninger, der skal udføres gentagne gange indtil slutningen af ​​områdeudtrykket.

Bemærk: Hvis vi ikke kender datatypen for containerelementerne, kan vi bruge det automatiske søgeord, der automatisk identificerer datatypen for range_expression.

Program til at udskrive hvert element i arrayet ved hjælp af rækkevidde baseret for loop

Lad os overveje et eksempel for at udskrive int og dobbelt array ved at bruge den områdebaserede for loop i C++.

array java

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

Produktion

 10 20 30 40 50 2.4 4.5 1.5 3.5 4.0 

Program til at demonstrere vektoren i rækkevidde baseret på loop

Lad os skrive et simpelt program til at implementere vektoren i rækkevidde baseret for loop.

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

Produktion

 5 10 25 20 25 

Program til at udskrive arrays ved hjælp af Range based for loop i C++ med reference

Lad os overveje et eksempel for at udskrive array-elementerne ved hjælp af range based for loop i C++.

java indeks

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

Produktion

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

Indlejret rækkevidde-baseret for loop

Når en løkke er defineret inde i kroppen af ​​en anden løkke, kaldes løkken en indlejret for løkke. På samme måde, når vi definerer et område i en loop inde i en anden områdebaseret loop, er teknikken kendt som en indlejret områdebaseret for loop.

Syntaks:

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

I ovenstående syntaks definerer vi et interval-baseret for loop inde i en anden loop. Her kalder vi indre og ydre rækkevidde-baseret for loop i C++.

Program til at udskrive det indlejrede område-baseret for loop i C++

Overvej et eksempel for at demonstrere det indlejrede område baseret på loop i C++ programmeringssprog.

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

Produktion

 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 

Hvad er forskellen mellem traditionel for loop og range-based for loop?

EN traditionel for loop bruges til gentagne gange at udføre kodeblokken, indtil den angivne betingelse er sand. En traditionel for loop har tre parametre, initialisering af variablen, specificer betingelsen, og den sidste er en tæller, der øges med én, hvis betingelsen forbliver sand.

karakter.sammenlign java

Syntaks:

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

Rækkevidde-baseret sløjfe

På den anden side har vi en ny rækkebaseret for loop tilgængelig i C++ 11 og nyere version. Den har to parametre, områdedeklaration og range_-udtrykket. Det bruges også til gentagne gange at udføre kodeblokken over et område.

Syntaks

 for ( range_declaration : range_ expression ) { loop _statement; // statement to be executed; } 

Range_declaration bruges til at erklære typen af ​​variabel relateret til range_expression (beholder). Range_expression: Det er ligesom en container, der rummer de samme typer elementer på en sekventiel måde. Loop_statementet definerer sætningen, som udføres inde for loop.

Fordele ved den rækkevidde-baserede for loop

  1. Den er nem at bruge, og dens syntaks er også enkel.
  2. En rækkebaseret for loop kræver ikke beregning af antallet af elementer i en container
  3. Den genkender beholdernes start- og slutelementer.
  4. Vi kan nemt ændre containerens størrelse og elementer.
  5. Det skaber ikke nogen kopi af elementerne.
  6. Det er meget hurtigere end det traditionelle for loop.
  7. Det bruger normalt autonøgleordet til at genkende datatypen for containerelementerne.

Ulempe ved den rækkevidde-baserede for loop

  1. Den kan ikke krydse en del af en liste.
  2. Den kan ikke bruges til at køre i omvendt rækkefølge
  3. Det kan ikke bruges i pointere.
  4. Det tilbyder ikke at indeksere de aktuelle elementer.