Š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 forcilpu. Šī forcilpa 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 forcilpa atkārto masīva numuru no sākuma līdz beigām. intMainī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
Cilpas diapazona darbība C ++
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 intmasīvu ar nosaukumu numArray. Šeit mēs izmantojām diapazona forcilpu, 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
2un 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 forcilpas 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 forciklā, 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.
Darbs adreses norādīšanai C ++ diapazonā pēc cilpas
Piezīme: Ja mēs nemainām masīvu / vektoru / kolekciju cilpā, labāk ir izmantot constatslēgvārdu diapazona deklarācijā.
// collection is not modified in the loop for (const int &var : num) ( // code )








