logo

For petlja temeljena na rasponu u C++

U ovoj temi raspravljat ćemo o petlji for koja se temelji na rasponu u programskom jeziku C++. Jezik C++ uveo je novi koncept petlje for na temelju raspona u C++11 i novijim verzijama, što je mnogo bolje od uobičajene petlje For. For petlja temeljena na rasponu ne zahtijeva veliko kodiranje za implementaciju iteracije for petlje. To je sekvencijalni iterator koji ponavlja svaki element spremnika u rasponu (od početka do kraja).

For petlja temeljena na rasponu u C++

Sintaksa

 for (range_declaration : range_expression ) loop statement 
    deklaracija_raspona:Koristi se za deklariranje varijable čiji je tip isti kao tipovi prikupljenih elemenata predstavljenih izrazom_range_expression ili referencom na taj tip.raspon_izraza:Definira izraz koji predstavlja odgovarajući niz elemenata.naredba petlje:Definira tijelo for petlje temeljene na rasponu koja sadrži jednu ili više naredbi koje se opetovano izvršavaju do kraja izraza raspona.

Napomena: Ako ne znamo vrstu podataka elemenata spremnika, možemo upotrijebiti ključnu riječ auto koja automatski identificira vrstu podataka range_expression.

Program za ispis svakog elementa niza pomoću petlje na temelju raspona

Razmotrimo primjer ispisa int i dvostrukog niza pomoću petlje for koja se temelji na rasponu u 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; } 

Izlaz

 10 20 30 40 50 2.4 4.5 1.5 3.5 4.0 

Program za demonstraciju vektora u rasponu na temelju for petlje

Napišimo jednostavan program za implementaciju vektora u rasponu na temelju for petlje.

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

Izlaz

kako promijeniti string u int
 5 10 25 20 25 

Program za ispis nizova pomoću petlje for na temelju raspona u C++ s referencom

Razmotrimo primjer ispisa elemenata niza pomoću petlje for na temelju raspona u 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; } 

Izlaz

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

Ugniježđena petlja for na temelju raspona

Kada je petlja definirana unutar tijela druge petlje, petlja se naziva ugniježđena for petlja. Slično, kada definiramo raspon u petlji unutar druge petlje koja se temelji na rasponu, tehnika je poznata kao ugniježđena petlja for na temelju raspona.

Sintaksa:

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

U gornjoj sintaksi definiramo jednu for petlju temeljenu na rasponu unutar druge petlje. Ovdje nazivamo unutarnju i vanjsku petlju for baziranu na rasponu u C++.

Program za ispis ugniježđene petlje for na temelju raspona u C++

Razmotrite primjer za demonstraciju ugniježđenog raspona temeljenog na petlji for u programskom jeziku C++.

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

Izlaz

 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 

Koja je razlika između tradicionalne for petlje i for petlje temeljene na rasponu?

A tradicionalna for petlja koristi se za opetovano izvršavanje bloka koda dok navedeni uvjet ne bude istinit. Tradicionalna for petlja ima tri parametra, inicijalizaciju varijable, specificiranje uvjeta, a posljednji je brojač koji se povećava za jedan ako uvjet ostane istinit.

string.valueof java

Sintaksa:

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

Petlja na temelju raspona

S druge strane, imamo novu for petlju koja se temelji na rasponu dostupnu u C++ 11 i novijoj verziji. Ima dva parametra, deklaraciju raspona i izraz range_. Također se koristi za opetovano izvršavanje bloka koda u rasponu.

Sintaksa

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

Rang_declaration se koristi za deklariranje tipa varijable povezane s range_expression (spremnik). Rang_expression: To je poput spremnika koji sadrži iste vrste elemenata na sekvencijalan način. Naredba loop_statement definira naredbu koja se izvršava unutar for petlje.

Prednosti petlje for koja se temelji na rasponu

  1. Jednostavan je za korištenje, a sintaksa mu je također jednostavna.
  2. For petlja temeljena na rasponu ne zahtijeva izračun broja elemenata u spremnicima
  3. Prepoznaje početne i završne elemente spremnika.
  4. Veličinu i elemente kontejnera možemo jednostavno mijenjati.
  5. Ne stvara nikakvu kopiju elemenata.
  6. Puno je brži od tradicionalne for petlje.
  7. Obično koristi ključnu riječ auto za prepoznavanje tipa podataka elemenata spremnika.

Nedostatak petlje for koja se temelji na rasponu

  1. Ne može proći kroz dio liste.
  2. Ne može se koristiti za kretanje obrnutim redoslijedom
  3. Ne može se koristiti u pokazivačima.
  4. Ne nudi indeksiranje trenutnih elemenata.