Ebben a témában a C++ programozási nyelv tartomány alapú for ciklusát tárgyaljuk. A C++ nyelv a tartomány alapú for ciklus új koncepcióját vezette be a C++11 és újabb verzióiban, ami sokkal jobb, mint a hagyományos For ciklus. A tartomány alapú for ciklus nem igényel nagy kódolást a ciklus iterációjához. Ez egy szekvenciális iterátor, amely a tároló minden elemét egy tartományon keresztül iterálja (az elejétől a végéig).
pandák loc
Szintaxis
for (range_declaration : range_expression ) loop statement
Megjegyzés: Ha nem ismerjük a tárolóelemek adattípusát, használhatjuk az auto kulcsszót, amely automatikusan azonosítja a range_expression adattípusát.
Program a tömb minden elemének kinyomtatására a ciklus alapú tartomány használatával
Nézzünk egy példát az int és a dupla tömb kinyomtatására a tartomány alapú for ciklus használatával a C++ nyelven.
program.cpp
#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; }
Kimenet
10 20 30 40 50 2.4 4.5 1.5 3.5 4.0
Program, amely bemutatja a vektort a tartományon belül a hurok alapján
Írjunk egy egyszerű programot a vektor tartomány alapú for ciklus alapú megvalósítására.
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; }
Kimenet
5 10 25 20 25
Program a tömbök kinyomtatására a Range alapú for ciklus használatával C++ nyelven hivatkozással
Nézzünk egy példát a tömbelemek kinyomtatására a tartomány alapú for ciklus használatával a C++ nyelven.
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; }
Kimenet
Before updating the elements: 1 3 -2 4 6 7 9 After modification of the elements: 3 9 -6 12 18 21 27
Beágyazott tartomány alapú hurokhoz
Ha egy hurkot egy másik hurok törzsében definiálunk, a ciklust beágyazott ciklusnak nevezzük. Hasonlóképpen, amikor egy hurokban definiálunk egy tartományt egy másik tartományalapú hurkon belül, a technikát beágyazott tartomány-alapú for ciklusnak nevezzük.
Szintaxis:
for ( int x : range_expression) // outer loop { for ( int y : range_expression) // inner loop { // statement to be executed } // statement to be executed }
A fenti szintaxisban egy tartomány alapú ciklust definiálunk egy másik cikluson belül. Itt belső és külső tartomány alapúnak nevezzük a ciklust a C++ nyelven.
Program a beágyazott tartomány alapú for ciklus kinyomtatására C++ nyelven
Tekintsen egy példát a beágyazott tartomány bemutatására a cikluson alapuló C++ programozási nyelvben.
Tartomány.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; }
Kimenet
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
Mi a különbség a hagyományos for loop és a range-based for loop között?
A hagyományos for loop a kódblokk ismételt végrehajtására szolgál, amíg a megadott feltétel igaz. A hagyományos for ciklusnak három paramétere van, a változó inicializálása, a feltétel megadása, az utolsó pedig a számláló, amely eggyel növekszik, ha a feltétel igaz marad.
Szintaxis:
for ( variable_initialization; specify_condition; updated_counter) { // statement to be executed; }
Tartomány alapú hurok
Másrészt a C++ 11-es és újabb verzióiban elérhető egy új tartomány-alapú for loop. Két paramétere van, a tartomány deklarációja és a range_ kifejezés. A kódblokk egy tartományon belüli ismételt végrehajtására is szolgál.
Szintaxis
for ( range_declaration : range_ expression ) { loop _statement; // statement to be executed; }
A range_declaration a tartomány_kifejezéshez (tároló) kapcsolódó változó típusának deklarálására szolgál. A range_expression: Olyan, mint egy tároló, amely azonos típusú elemeket tartalmaz egymás után. A loop_statement határozza meg a cikluson belül végrehajtott utasítást.
A tartomány alapú for hurok előnyei
- Könnyen használható, és a szintaxisa is egyszerű.
- A tartomány alapú for ciklus nem igényli a tárolókban lévő elemek számának kiszámítását
- Felismeri a konténerek kezdő és záró elemeit.
- Könnyedén módosíthatjuk a konténer méretét és elemeit.
- Nem hoz létre másolatot az elemekről.
- Sokkal gyorsabb, mint a hagyományos for ciklus.
- Általában az auto kulcsszót használja a tárolóelemek adattípusának felismerésére.
A tartomány alapú for hurok hátránya
- Nem képes bejárni a lista egy részét.
- Nem használható fordított sorrendben történő mozgásra
- Mutatókban nem használható.
- Nem kínálja fel az aktuális elemek indexelését.