C ++ diapazons lokam (ar piemēriem)

Š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 ir1
  • 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 )

Interesanti raksti...