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 je
1 - 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 )








