C ++ Ranged for Loop (met voorbeelden)

In deze tutorial zullen we met behulp van voorbeelden leren over de C ++ ranged for loops en de best practices ervan.

C ++ 11 introduceerde de range- forloop. Deze forlus wordt specifiek gebruikt met verzamelingen zoals arrays en vectoren .

Bijvoorbeeld,

 // initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )

Hier forherhaalt de reekslus het array num van het begin tot het einde. De intvariabele var slaat de waarde van het array-element in elke iteratie op.

De syntaxis is,

 for (rangeDeclaration : rangeExpression) ( // code )

In het bovenstaande voorbeeld

  • bereik Aangifte -int var
  • bereik Expressie - num
Werken van ranged for loop in C ++

Voorbeeld 1: Bereik voor lus met behulp van array

 #include using namespace std; int main() ( // initialize array int numArray() = (1, 2, 3, 4, 5); // use of ranged for loop to print array elements for (int n : numArray) ( cout << n << " "; ) return 0; )

Uitvoer

 1 2 3 4 5

In dit voorbeeld hebben we een intarray met de naam numArray gedeclareerd en geïnitialiseerd . Hier hebben we de ranged- forlus gebruikt om de elementen van numArray af te drukken.

  • eerste iteratie - n neemt de waarde van het eerste lid van de array, namelijk1
  • tweede iteratie - n neemt de waarde van 2en wordt vervolgens afgedrukt, enzovoort.

Opmerking: de lus voor bereik herhaalt de array automatisch van het begin tot het einde. We hoeven het aantal iteraties in de lus niet op te geven.

Voorbeeld 2: C ++ Ranged for Loop using Vector

 #include #include using namespace std; int main() ( // declare and initialize vector vector num_vector = (1, 2, 3, 4, 5); // print vector elements for (int n : num_vector) ( cout << n << " "; ) return 0; )

Uitvoer

 1 2 3 4 5

Voorbeeld 3: Declareer verzameling binnen de lus

 #include using namespace std; int main() ( // define the collection in the loop itself for (int n : (1, 2, 3, 4, 5)) ( cout << n << " "; ) return 0; )

Uitvoer

 1 2 3 4 5

Hier hebben we de verzameling binnen de lus zelf verklaard, dwz

 rangeExpression = (1, 2, 3, 4, 5)

Dit is ook een geldige manier om de ranged- forlus te gebruiken, en het werkt op dezelfde manier als wanneer we een echte array of vector gebruiken.

C ++ Ranged for Loop Best Practices

In de bovenstaande voorbeelden hebben we een variabele in de forlus gedeclareerd om elk element van de verzameling in elke iteratie op te slaan.

 int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )

Het is echter beter om de op afstand gebaseerde for-lus als volgt te schrijven:

 // access memory location of elements of num for (int &var : num) ( // code )

Let op het gebruik van &before var. Hier,

  • int var : num- Kopieert elk element van num naar de variabele var in elke iteratie. Dit is niet goed voor het computergeheugen.
  • int &var : num- Kopieert niet elk element van num naar var. In plaats daarvan heeft het rechtstreeks vanuit num zelf toegang tot de elementen van num. Dit is efficiënter.

Opmerking: de &operator staat bekend als de referentie-operator. We zullen er meer over leren in C ++ - verwijzingen.

Werking van adresverwijzing in C ++ varieerde lus

Opmerking: als we de array / vector / collectie binnen de lus niet wijzigen, is het beter om het consttrefwoord in range-declaratie te gebruiken.

 // collection is not modified in the loop for (const int &var : num) ( // code )

Interessante artikelen...