logo

Rekkeviddebasert for loop i C++

I dette emnet vil vi diskutere rekkeviddebaserte for loop i C++ programmeringsspråket. C++-språket introduserte et nytt konsept for den rekkeviddebaserte for loop i C++11 og senere versjoner, som er mye bedre enn den vanlige For loop. En rekkeviddebasert for loop krever ikke stor koding for å implementere for loop-iterasjon. Det er en sekvensiell iterator som itererte hvert element i beholderen over et område (fra begynnelse til slutt).

Rekkeviddebasert for loop i C++

Syntaks

 for (range_declaration : range_expression ) loop statement 
    range_declaration:Den brukes til å deklarere en variabel hvis type er den samme som typene av de innsamlede elementene representert av range_expression eller referanse til den typen.range_expression:Den definerer et uttrykk som representerer den passende sekvensen av elementer.loop statement:Den definerer kroppen til den områdebaserte for-løkken som inneholder en eller flere setninger som skal utføres gjentatte ganger til slutten av områdeuttrykket.

Merk: Hvis vi ikke kjenner datatypen til beholderelementene, kan vi bruke autosøkeordet som automatisk identifiserer datatypen for range_expression.

Program for å skrive ut hvert element i matrisen ved å bruke rekkevidde basert for loop

La oss vurdere et eksempel for å skrive ut int- og dobbelmatrisen ved å bruke den rekkeviddebaserte 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; } 

Produksjon

 10 20 30 40 50 2.4 4.5 1.5 3.5 4.0 

Program for å demonstrere vektoren i rekkevidde basert for loop

La oss skrive et enkelt program for å implementere vektoren i rekkevidde basert 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; } 

Produksjon

 5 10 25 20 25 

Program for å skrive ut arrayene ved å bruke Range based for loop i C++ med referanse

La oss vurdere et eksempel for å skrive ut array-elementene ved å bruke rekkevidde basert for loop i C++.

innsettingssorteringsalgoritme

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

Produksjon

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

Nestet rekkeviddebasert for loop

Når en løkke er definert inne i kroppen til en annen løkke, kalles løkken en nestet for løkke. På samme måte, når vi definerer et område i en løkke inne i en annen områdebasert sløyfe, er teknikken kjent som en nestet områdebasert for løkke.

Syntaks:

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

I syntaksen ovenfor definerer vi en rekkeviddebasert for løkke inne i en annen løkke. Her kaller vi indre og ytre rekkeviddebasert for loop i C++.

Program for å skrive ut den nestede rekkevidden-basert for loop i C++

Tenk på et eksempel for å demonstrere det nestede området basert for loop i programmeringsspråket 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; } 

Produksjon

 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 

Hva er forskjellen mellom tradisjonell for loop og rekkeviddebasert for loop?

EN tradisjonell for loop brukes til å utføre kodeblokken gjentatte ganger til den angitte betingelsen er sann. En tradisjonell for loop har tre parametere, initialisering av variabelen, spesifiser betingelsen, og den siste er en teller som økes med én hvis betingelsen forblir sann.

gimp sletter bakgrunn

Syntaks:

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

Rekkeviddebasert sløyfe

På den annen side har vi en ny rekkeviddebasert for loop tilgjengelig i C++ 11 og nyere versjon. Den har to parametere, områdedeklarasjon og range_-uttrykket. Den brukes også til å gjentatte ganger utføre kodeblokken over et område.

Syntaks

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

Range_declaration brukes til å deklarere typen variabel relatert til range_expression (beholder). Range_expression: Det er akkurat som en beholder som inneholder de samme typene elementer på en sekvensiell måte. loop_statementet definerer setningen som utføres inne for loop.

Fordeler med rekkevidde-basert for loop

  1. Den er enkel å bruke, og syntaksen er også enkel.
  2. En rekkeviddebasert for loop krever ikke beregning av antall elementer i en container
  3. Den gjenkjenner start- og sluttelementene til beholderne.
  4. Vi kan enkelt endre størrelsen og elementene i beholderen.
  5. Den lager ingen kopi av elementene.
  6. Det er mye raskere enn det tradisjonelle for loop.
  7. Den bruker vanligvis autonøkkelordet for å gjenkjenne datatypen til beholderelementene.

Ulempen med rekkevidde-basert for loop

  1. Den kan ikke krysse en del av en liste.
  2. Den kan ikke brukes til å kjøre i omvendt rekkefølge
  3. Den kan ikke brukes i pekere.
  4. Den tilbyr ikke å indeksere gjeldende elementer.