În acest tutorial, vom afla despre C ++ pentru bucle și cele mai bune practici ale acesteia, cu ajutorul exemplelor.
C ++ 11 a introdus for
bucla la distanță . Această for
buclă este utilizată în mod special cu colecții precum matrici și vectori .
De exemplu,
// initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )
Aici, for
bucla la distanță iterează numărul matricei de la începutul până la sfârșit. int
Var variabilă stochează valoarea elementului matrice în fiecare iterație.
Sintaxa sa este,
for (rangeDeclaration : rangeExpression) ( // code )
În exemplul de mai sus,
- rangeDeclaration -
int var
- rangeExpression - num

Exemplul 1: Ranged for Loop Using 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; )
Ieșire
1 2 3 4 5
În acest exemplu, am declarat și inițializat o int
matrice numită numArray. Aici, am folosit for
bucla la distanță pentru a imprima elementele numArray.
- prima iterație - n ia valoarea primului membru al matricei, care este
1
- a doua iterație - n ia valoarea
2
și este apoi tipărită și așa mai departe.
Notă: Bucla de distanță iterează automat matricea de la început până la sfârșit. Nu trebuie să specificăm numărul de iterații din buclă.
Exemplul 2: C ++ a variat pentru buclă folosind 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; )
Ieșire
1 2 3 4 5
Exemplul 3: Declarați colecția în buclă
#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; )
Ieșire
1 2 3 4 5
Aici, am declarat colecția în cadrul buclei în sine ie
rangeExpression = (1, 2, 3, 4, 5)
Acesta este, de asemenea, un mod valid de a utiliza for
bucla la distanță și funcționează în același mod ca atunci când folosim o matrice sau un vector real.
C ++ Ganged for Loop Best Practices
În exemplele de mai sus, am declarat o variabilă în for
buclă pentru a stoca fiecare element al colecției în fiecare iterație.
int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )
Cu toate acestea, este mai bine să scrieți buclele bazate pe distanță astfel:
// access memory location of elements of num for (int &var : num) ( // code )
Observați utilizarea &
înainte de var. Aici,
int var : num
- Copiază fiecare element de num la variabila var din fiecare iterație. Acest lucru nu este bun pentru memoria calculatorului.int &var : num
- Nu copiază fiecare element de num în var. În schimb, accesează elementele num direct din num însuși. Acest lucru este mai eficient.
Notă:&
Operatorul este cunoscut ca operatorul de referință. Vom afla mai multe despre aceasta în pointerele C ++.

Notă: Dacă nu modificăm matricea / vectorul / colecția din buclă, este mai bine să folosim const
cuvântul cheie în declarația de interval.
// collection is not modified in the loop for (const int &var : num) ( // code )