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- for
loop. Deze for
lus 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 for
herhaalt de reekslus het array num van het begin tot het einde. De int
variabele 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

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 int
array met de naam numArray gedeclareerd en geïnitialiseerd . Hier hebben we de ranged- for
lus gebruikt om de elementen van numArray af te drukken.
- eerste iteratie - n neemt de waarde van het eerste lid van de array, namelijk
1
- tweede iteratie - n neemt de waarde van
2
en 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- for
lus 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 for
lus 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.

Opmerking: als we de array / vector / collectie binnen de lus niet wijzigen, is het beter om het const
trefwoord in range-declaratie te gebruiken.
// collection is not modified in the loop for (const int &var : num) ( // code )