V tomto tutoriálu se pomocí příkladů dozvíme o rozsahu C ++ pro smyčky a jeho osvědčených postupech.
C ++ 11 představil for
smyčku na dálku . Tato for
smyčka se konkrétně používá u kolekcí, jako jsou pole a vektory .
Například,
// initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )
Zde pohyblivá for
smyčka iteruje číslo pole od začátku do konce. int
Proměnná var ukládá hodnotu prvku pole v každém opakování.
Jeho syntax je,
for (rangeDeclaration : rangeExpression) ( // code )
Ve výše uvedeném příkladu
- rangeDeclaration -
int var
- rangeExpression - počet

Příklad 1: Na dálku pro smyčku pomocí pole
#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ýstup
1 2 3 4 5
V tomto příkladu jsme deklarovali a inicializovali int
pole s názvem numArray. Zde jsme použili for
smyčku na dálku k vytištění prvků numArray.
- první iterace - n přebírá hodnotu prvního člena pole, což je
1
- druhá iterace - n převezme hodnotu
2
a poté se vytiskne atd.
Poznámka: Smyčka ranged for automaticky iteruje pole od jeho začátku do konce. Nepotřebujeme specifikovat počet iterací ve smyčce.
Příklad 2: C ++ pro smyčku pomocí 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; )
Výstup
1 2 3 4 5
Příklad 3: Deklarovat kolekci uvnitř smyč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ýstup
1 2 3 4 5
Zde jsme deklarovali kolekci v samotné smyčce, tj
rangeExpression = (1, 2, 3, 4, 5)
Toto je také platný způsob použití for
smyčky na dálku a funguje to stejně, jako když používáme skutečné pole nebo vektor.
Doporučené postupy pro smyčky v C ++
Ve výše uvedených příkladech jsme deklarovali proměnnou ve for
smyčce pro uložení každého prvku kolekce v každé iteraci.
int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )
Je však lepší psát rozsahy založené na smyčce takto:
// access memory location of elements of num for (int &var : num) ( // code )
Všimněte si použití &
před var. Tady,
int var : num
- Zkopíruje každý prvek num do proměnné var v každé iteraci. To není dobré pro paměť počítače.int &var : num
- Nekopíruje každý prvek num do var. Místo toho přistupuje k prvkům num přímo ze samotného num. To je efektivnější.
Poznámka:&
operátor je znám jako referenční operátor. Dozvíme se o tom více v ukazatelích C ++.

Poznámka: Pokud neměníme pole / vektor / kolekci ve smyčce, je lepší použít const
klíčové slovo v deklaraci rozsahu.
// collection is not modified in the loop for (const int &var : num) ( // code )