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).
Syntaks
for (range_declaration : range_expression ) loop statement
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
- Den er nem at bruge, og dens syntaks er også enkel.
- En rækkebaseret for loop kræver ikke beregning af antallet af elementer i en container
- Den genkender beholdernes start- og slutelementer.
- Vi kan nemt ændre containerens størrelse og elementer.
- Det skaber ikke nogen kopi af elementerne.
- Det er meget hurtigere end det traditionelle for loop.
- Det bruger normalt autonøgleordet til at genkende datatypen for containerelementerne.
Ulempe ved den rækkevidde-baserede for loop
- Den kan ikke krydse en del af en liste.
- Den kan ikke bruges til at køre i omvendt rækkefølge
- Det kan ikke bruges i pointere.
- Det tilbyder ikke at indeksere de aktuelle elementer.