I denne vejledning lærer vi om C ++ -området for sløjfer og dets bedste praksis ved hjælp af eksempler.
C ++ 11 introducerede den rangerede for
løkke. Denne for
sløjfe bruges specifikt med samlinger som arrays og vektorer .
For eksempel,
// initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )
Her for
gentager sløjfen med rækkevidde arrayet num fra begyndelsen til slutningen. Den int
variable var gemmer værdien af array element i hver iteration.
Dens syntaks er,
for (rangeDeclaration : rangeExpression) ( // code )
I ovenstående eksempel
- rækkevidde Erklæring -
int var
- rangeExpression - num

Eksempel 1: Rangeret til løkke ved hjælp af 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; )
Produktion
1 2 3 4 5
I dette eksempel erklærede og initialiserede vi en int
matrix med navnet numArray. Her brugte vi den varierede for
løkke til at udskrive elementerne i numArray.
- første iteration - n tager værdien af det første medlem af arrayet, hvilket er
1
- anden iteration - n tager værdien af
2
og udskrives derefter og så videre.
Bemærk: Området for sløjfe gentager automatisk arrayet fra begyndelsen til slutningen. Vi behøver ikke at specificere antallet af iterationer i sløjfen.
Eksempel 2: C ++ Rangeret til løkke ved hjælp af vektor
#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; )
Produktion
1 2 3 4 5
Eksempel 3: Erklær indsamling inde i løkken
#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; )
Produktion
1 2 3 4 5
Her har vi erklæret samlingen inden for selve sløjfen, dvs.
rangeExpression = (1, 2, 3, 4, 5)
Dette er også en gyldig måde at bruge den rangerede for
sløjfe på, og det fungerer på samme måde som når vi bruger en faktisk matrix eller vektor.
C ++ Ranged for Loop Best Practices
I ovenstående eksempler har vi deklareret en variabel i for
sløjfen til at gemme hvert element i samlingen i hver iteration.
int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )
Det er dog bedre at skrive den rækkevidde baseret på loop som denne:
// access memory location of elements of num for (int &var : num) ( // code )
Bemærk brugen af &
før var. Her,
int var : num
- Kopierer hvert element af num til variablen var i hver iteration. Dette er ikke godt for computerhukommelse.int &var : num
- Kopierer ikke hvert element af num til var. I stedet får du adgang til elementerne i num direkte fra selve num. Dette er mere effektivt.
Bemærk: Den &
Operatøren er kendt som reference operatør. Vi lærer mere om det i C ++ pointer.

Bemærk: Hvis vi ikke ændrer array / vector / collection inden i loop, er det bedre at bruge const
nøgleordet i områdedeklaration.
// collection is not modified in the loop for (const int &var : num) ( // code )