Rozsah C ++ pre slučku (s príkladmi)

V tomto tutoriále sa pomocou príkladov dozvieme o cykloch C ++ pre cykly a jeho osvedčených postupoch.

C ++ 11 predstavil pohyblivú forslučku. Táto forslučka sa špeciálne používa s kolekciami, ako sú polia a vektory .

Napríklad,

 // initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )

Tu pohyblivá forslučka iteruje číslo poľa od začiatku do konca. intPremenná var ukladá hodnotu prvku poľa v každom opakovaní.

Jeho syntax je,

 for (rangeDeclaration : rangeExpression) ( // code )

Vo vyššie uvedenom príklade

  • rangeDeclaration -int var
  • rangeExpression - počet
Práca cyklu pre rozsah v C ++

Príklad 1: Na rade pre slučku pomocou poľa

 #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; )

Výkon

 1 2 3 4 5

V tomto príklade sme deklarovali a inicializovali intpole s názvom numArray. Tu sme pomocou forpohyblivej slučky vytlačili prvky numArray.

  • prvá iterácia - n berie hodnotu prvého člena poľa, čo je1
  • druhá iterácia - n prevezme hodnotu 2a potom sa vytlačí atď.

Poznámka: Smyčka ranged for automaticky iteruje pole od jeho začiatku do konca. Nie je potrebné zadávať počet iterácií v slučke.

Príklad 2: C ++ pre slučku pomocou 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; )

Výkon

 1 2 3 4 5

Príklad 3: Deklarovať zbierku vo vnútri slučky

 #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; )

Výkon

 1 2 3 4 5

Tu sme deklarovali kolekciu v rámci samotnej slučky, tj

 rangeExpression = (1, 2, 3, 4, 5)

Toto je tiež platný spôsob použitia pohyblivej forslučky a funguje to rovnako, ako keď používame skutočné pole alebo vektor.

Najlepšie postupy pre slučku v rozsahu C ++

Vo vyššie uvedených príkladoch sme deklarovali premennú v forslučke na uloženie každého prvku kolekcie v každej iterácii.

 int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )

Je však lepšie napísať rozsah založený na cykle for takto:

 // access memory location of elements of num for (int &var : num) ( // code )

Všimnite si použitie &pred var. Tu,

  • int var : num- Skopíruje každý prvok num do premennej var v každej iterácii. To nie je dobré pre pamäť počítača.
  • int &var : num- Nekopíruje každý prvok čísla do var. Namiesto toho pristupuje k prvkom num priamo zo samotného čísla. To je efektívnejšie.

Poznámka:& operátor je známy ako referenčný operátor. Viac sa o tom dozvieme v ukazovateľoch C ++.

Práca s ukazovaním adresy v C ++ sa pohybovala v rozsahu pre slučku

Poznámka: Ak nemeníme pole / vektor / kolekciu v rámci cyklu, je lepšie použiť constkľúčové slovo v deklarácii rozsahu.

 // collection is not modified in the loop for (const int &var : num) ( // code )

Zaujímavé články...