U ovom uputstvu uz primjere ćemo naučiti o C ++-u za petlje i njegove najbolje prakse.
C ++ 11 predstavio je for
petlju s rangiranjem . Ova se for
petlja posebno koristi za zbirke kao što su nizovi i vektori .
Na primjer,
// initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )
Ovdje rangirana for
petlja ponavlja niz polja od početka do kraja. int
Varijabla var pohranjuje vrijednost polja elementa u svakom ponavljanju.
Njegova sintaksa je,
for (rangeDeclaration : rangeExpression) ( // code )
U gornjem primjeru,
- rangeDeclaration -
int var
- rangeExpression - num

Primjer 1: Raspon za petlju pomoću niza
#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; )
Izlaz
1 2 3 4 5
U ovom smo primjeru deklarirali i inicijalizirali int
niz nazvan numArray. Ovdje smo rangiranu for
petlju koristili za ispis elemenata numArray.
- prva iteracija - n uzima vrijednost prvog člana niza, što je
1
- druga iteracija - n uzima vrijednost
2
i zatim se ispisuje i tako dalje.
Napomena: Petlja za raspon for automatski ponavlja niz od početka do kraja. Ne trebamo navesti broj iteracija u petlji.
Primjer 2: C ++ raspon za petlju pomoću vektora
#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; )
Izlaz
1 2 3 4 5
Primjer 3: Prijavite zbirku unutar petlje
#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; )
Izlaz
1 2 3 4 5
Ovdje smo proglasili kolekciju unutar same petlje, tj
rangeExpression = (1, 2, 3, 4, 5)
Ovo je također valjan način korištenja rangirane for
petlje i djeluje na isti način kao kada koristimo stvarni niz ili vektor.
C ++ u rasponu za najbolje primjere iz prakse
U gornjim primjerima deklarirali smo varijablu u for
petlji za spremanje svakog elementa zbirke u svaku iteraciju.
int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )
Međutim, bolje je napisati rangirano temeljeno na petlju ovako:
// access memory location of elements of num for (int &var : num) ( // code )
Primijetite upotrebu &
prije var. Ovdje,
int var : num
- Kopira svaki element num u varijablu var u svakoj iteraciji. To nije dobro za memoriju računala.int &var : num
- Ne kopira svaki element num u var. Umjesto toga, elementima num pristupa izravno iz samog broja. Ovo je učinkovitije.
Napomena:&
operater je poznat kao referentna operatora. O tome ćemo saznati više u pokazivačima na C ++.

Napomena: Ako ne mijenjamo niz / vektor / kolekciju unutar petlje, bolje je upotrijebiti const
ključnu riječ u deklaraciji raspona.
// collection is not modified in the loop for (const int &var : num) ( // code )