V tomto tématu probereme smyčku for založenou na rozsahu v programovacím jazyce C++. Jazyk C++ představil nový koncept smyčky for založené na rozsahu v C++ 11 a novějších verzích, která je mnohem lepší než běžná smyčka For. Smyčka for založená na rozsahu nevyžaduje velké kódování k implementaci iterace smyčky for. Jedná se o sekvenční iterátor, který iteruje každý prvek kontejneru v rozsahu (od začátku do konce).
Syntax
for (range_declaration : range_expression ) loop statement
Poznámka: Pokud neznáme datový typ prvků kontejneru, můžeme použít klíčové slovo auto, které automaticky identifikuje datový typ range_expression.
Program pro tisk každého prvku pole pomocí smyčky for založené na rozsahu
Uvažujme příklad pro tisk pole int a double pomocí cyklu for založeného na rozsahu v C++.
program.cpp
disketa
#include using namespace std; int main () { int arr1 [5] = { 10, 20, 30, 40, 50}; double darr [5] = { 2.4, 4.5, 1.5, 3.5, 4.0 }; // use range based for loop for ( const auto &var : arr1 ) { cout << var << ' ' ; } // use auto keyword to automatically specify the data type of darr container. for ( const auto &var : darr ) { cout << var << ' ' ; } return 0; }
Výstup
10 20 30 40 50 2.4 4.5 1.5 3.5 4.0
Program pro demonstraci vektoru v rozsahu na základě smyčky for
Pojďme napsat jednoduchý program pro implementaci vektoru v rozsahu založeném na cyklu for.
Program2.cpp
#include #include using namespace std; int main() { int x; // declare integer variable // declare vector variable vector vect = {5, 10 , 25, 20, 25}; // display vector elements for ( int x : vect) { cout << x << ' '; } return 0; }
Výstup
výška odsazení
5 10 25 20 25
Program pro tisk polí pomocí Range based for loop v C++ s odkazem
Uvažujme příklad tisku prvků pole pomocí rozsahu založeného na cyklu for v C++.
Program3.cpp
#include #include #include using namespace std; int main(){ array data = {1, 3, -2, 4, 6, 7, 9}; cout << ' Before updating the elements: ' << endl; for (int x : data){ cout << x << ' '; } // pass the references for (int &itemRef : data){ itemRef *= 3; } cout << endl << ' After modification of the elements: ' << endl; for (int x : data){ cout << x << ' '; } cout << endl; return 0; }
Výstup
Before updating the elements: 1 3 -2 4 6 7 9 After modification of the elements: 3 9 -6 12 18 21 27
Vnořená smyčka for založená na rozsahu
Když je smyčka definována uvnitř těla jiné smyčky, nazývá se smyčka vnořená smyčka for. Podobně, když definujeme rozsah ve smyčce uvnitř jiné smyčky založené na rozsahu, tato technika je známá jako vnořená smyčka for založená na rozsahu.
alisa manyonok
Syntax:
for ( int x : range_expression) // outer loop { for ( int y : range_expression) // inner loop { // statement to be executed } // statement to be executed }
Ve výše uvedené syntaxi definujeme jednu smyčku for založenou na rozsahu uvnitř jiné smyčky. Zde v C++ nazýváme smyčku for založenou na vnitřním a vnějším rozsahu.
Program pro tisk vnořené smyčky for založené na rozsahu v C++
Zvažte příklad, který demonstruje vnořený rozsah založený na cyklu for v programovacím jazyce C++.
Rozsah.cpp
#include using namespace std; int main () { int arr1[4] = { 0, 1, 2, 3 }; int arr2[5] = { 1, 2, 3, 4, 5 }; // use nested range based for loop for ( int x : arr1 ) { // declare nested loop for ( int y : arr2 ) { cout << ' x = ' << x << ' and j = ' << y << endl; } } return 0; }
Výstup
x = 0 and j = 1 x = 0 and j = 2 x = 0 and j = 3 x = 0 and j = 4 x = 0 and j = 5 x = 1 and j = 1 x = 1 and j = 2 x = 1 and j = 3 x = 1 and j = 4 x = 1 and j = 5 x = 2 and j = 1 x = 2 and j = 2 x = 2 and j = 3 x = 2 and j = 4 x = 2 and j = 5 x = 3 and j = 1 x = 3 and j = 2 x = 3 and j = 3 x = 3 and j = 4 x = 3 and j = 5
Jaký je rozdíl mezi tradiční smyčkou for a smyčkou for založenou na rozsahu?
A tradiční smyčka for se používá k opakovanému provádění bloku kódu, dokud není zadaná podmínka pravdivá. Tradiční cyklus for má tři parametry, inicializaci proměnné, specifikaci podmínky a poslední je čítač, který se zvýší o jedničku, pokud podmínka zůstane pravdivá.
Syntax:
for ( variable_initialization; specify_condition; updated_counter) { // statement to be executed; }
Smyčka založená na rozsahu
sonu nigam
Na druhou stranu máme v C++ 11 a novější verzi k dispozici novou smyčku for založenou na rozsahu. Má dva parametry, deklaraci rozsahu a výraz range_. Používá se také k opakovanému provádění bloku kódu v určitém rozsahu.
Syntax
for ( range_declaration : range_ expression ) { loop _statement; // statement to be executed; }
Range_declaration se používá k deklaraci typu proměnné související s range_expression (kontejnerem). Range_expression: Je to jako kontejner, který obsahuje stejné typy prvků postupně. Příkaz loop_statement definuje příkaz, který se provádí uvnitř cyklu for.
Výhody smyčky for založené na rozsahu
- Snadno se používá a jeho syntaxe je také jednoduchá.
- Smyčka for založená na rozsahu nevyžaduje výpočet počtu prvků v kontejnerech
- Rozpoznává počáteční a koncové prvky kontejnerů.
- Můžeme snadno upravit velikost a prvky kontejneru.
- Nevytváří žádnou kopii prvků.
- Je mnohem rychlejší než tradiční smyčka for.
- K rozpoznání datového typu prvků kontejneru obvykle používá klíčové slovo auto.
Nevýhoda smyčky for založené na rozsahu
- Nemůže procházet částí seznamu.
- Nelze jej použít k přejíždění v opačném pořadí
- Nelze jej použít v ukazatelích.
- Nenabízí indexování aktuálních prvků.