Šajā apmācībā mēs ar piemēru palīdzību uzzināsim par C ++ cilpu diapazonu un tā labāko praksi.
C ++ 11 ieviesa diapazona for
cilpu. Šī for
cilpa tiek īpaši izmantota tādām kolekcijām kā masīvi un vektori .
Piemēram,
// initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )
Šeit diapazona for
cilpa atkārto masīva numuru no sākuma līdz beigām. int
Mainīgais VAR saglabā vērtību masīva elements katrā atkārtojuma.
Tās sintakse ir
for (rangeDeclaration : rangeExpression) ( // code )
Iepriekš minētajā piemērā
- diapazonsDeklarācija -
int var
- rangeExpression - num

1. piemērs: diapazons, izmantojot loku, izmantojot masīvu
#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; )
Rezultāts
1 2 3 4 5
Šajā piemērā mēs deklarējām un inicializējām int
masīvu ar nosaukumu numArray. Šeit mēs izmantojām diapazona for
cilpu, lai izdrukātu numArray elementus.
- pirmā iterācija - n ņem masīva pirmā locekļa vērtību, kas ir
1
- otrais atkārtojums - n ņem vērtību
2
un pēc tam tiek izdrukāts utt.
Piezīme: Rinded for loop automātiski atkārto masīvu no tā sākuma līdz beigām. Mums nav nepieciešams norādīt atkārtojumu skaitu ciklā.
2. piemērs: C ++ diapazons lokam, izmantojot vektoru
#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; )
Rezultāts
1 2 3 4 5
3. piemērs: Deklarēt kolekciju lokā
#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; )
Rezultāts
1 2 3 4 5
Šeit mēs esam deklarējuši kolekciju pašā ciklā, ti
rangeExpression = (1, 2, 3, 4, 5)
Tas ir arī derīgs diapazona for
cilpas izmantošanas veids, un tas darbojas tāpat kā tad, kad mēs izmantojam faktisko masīvu vai vektoru.
C ++ diapazonā bija labākās prakses
Iepriekš minētajos piemēros mēs esam deklarējuši mainīgo for
ciklā, lai katru kolekcijas elementu saglabātu katrā atkārtojumā.
int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )
Tomēr labāk ir rakstīt diapazonu, pamatojoties uz cilpu šādi:
// access memory location of elements of num for (int &var : num) ( // code )
Ievērojiet &
pirms var. Šeit,
int var : num
- Katru num elementu kopē mainīgajā var katrā atkārtojumā. Tas neder datora atmiņai.int &var : num
- Nekopē katru num elementu uz var. Tā vietā piekļūst num elementiem tieši no paša num. Tas ir efektīvāk.
Piezīme:&
operators ir pazīstams kā atsauces operators. Mēs uzzināsim vairāk par to C ++ rādītājos.

Piezīme: Ja mēs nemainām masīvu / vektoru / kolekciju cilpā, labāk ir izmantot const
atslēgvārdu diapazona deklarācijā.
// collection is not modified in the loop for (const int &var : num) ( // code )