logo

Uz diapazonu balstīta cilpa C++ valodā

Šajā tēmā mēs apspriedīsim diapazonā balstīto cilpu C++ programmēšanas valodā. C++ valoda C++11 un jaunākās versijās ieviesa jaunu uz diapazonu balstītas cilpas koncepciju, kas ir daudz labāka nekā parastā For cilpa. Diapazona cilpai nav nepieciešama liela kodēšana, lai ieviestu cilpas iterāciju. Tas ir secīgs iterators, kas atkārto katru konteinera elementu diapazonā (no sākuma līdz beigām).

Uz diapazonu balstīta cilpa C++ valodā

Sintakse

 for (range_declaration : range_expression ) loop statement 
    range_declaration:To izmanto, lai deklarētu mainīgo, kura tips ir tāds pats kā savākto elementu veidiem, ko attēlo diapazona_izteiksme vai atsauce uz šo tipu.range_expression:Tas definē izteiksmi, kas attēlo piemērotu elementu secību.cilpas paziņojums:Tas definē uz diapazonu balstītas cilpas pamattekstu, kurā ir viens vai vairāki paziņojumi, kas atkārtoti jāizpilda līdz diapazona izteiksmes beigām.

Piezīme. Ja mēs nezinām konteinera elementu datu tipu, varam izmantot automātisko atslēgvārdu, kas automātiski identificē diapazona_izteiksmes datu tipu.

Programma katra masīva elementa drukāšanai, izmantojot diapazonu, kura pamatā ir cilpa

Apskatīsim piemēru int un dubultā masīva drukāšanai, izmantojot diapazonu balstītu for cilpu programmā C++.

programma.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; } 

Izvade

 10 20 30 40 50 2.4 4.5 1.5 3.5 4.0 

Programma vektora demonstrēšanai diapazonā, kura pamatā ir cilpa

Uzrakstīsim vienkāršu programmu vektora ieviešanai diapazonā, kura pamatā ir cilpa.

Programma2.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; } 

Izvade

 5 10 25 20 25 

Programma masīvu drukāšanai, izmantojot diapazonu, pamatojoties uz cilpu C++ ar atsauci

Apskatīsim piemēru, kā drukāt masīva elementus, izmantojot diapazonu, kas balstīts uz cilpu programmā C++.

Programma3.cpp

c++ int uz virkni
 #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; } 

Izvade

 Before updating the elements: 1 3 -2 4 6 7 9 After modification of the elements: 3 9 -6 12 18 21 27 

Ligzdota diapazona cilpai

Ja cilpa ir definēta citas cilpas pamattekstā, cilpu sauc par ligzdotu cilpu. Līdzīgi, kad mēs definējam diapazonu cilpā citā uz diapazonu balstītā cilpā, paņēmiens ir pazīstams kā ligzdots diapazons, kas balstīts uz cilpu.

pilna papildinātāja patiesības tabula

Sintakse:

 for ( int x : range_expression) // outer loop { for ( int y : range_expression) // inner loop { // statement to be executed } // statement to be executed } 

Iepriekš minētajā sintaksē mēs definējam vienu diapazonu balstītu cilpu citai cilpai. Šeit mēs saucam par iekšējo un ārējo diapazonu balstītu cilpu C++.

Programma ligzdotā diapazona cilpas drukāšanai programmā C++

Apsveriet piemēru, lai parādītu ligzdoto diapazonu, kura pamatā ir cilpa C++ programmēšanas valodā.

Diapazons.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; } 

Izvade

 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 

Kāda ir atšķirība starp tradicionālo cilpu un diapazonu balstītu cilpu?

A tradicionālā cilpai tiek izmantots, lai atkārtoti izpildītu koda bloku, līdz norādītais nosacījums ir patiess. Tradicionālajai cilpai ir trīs parametri, mainīgā inicializācija, norādiet nosacījumu, un pēdējais ir skaitītājs, kas tiek palielināts par vienu, ja nosacījums paliek patiess.

Sintakse:

 for ( variable_initialization; specify_condition; updated_counter) { // statement to be executed; } 

Uz diapazonu balstīta cilpa

No otras puses, C++ 11 un jaunākā versijā ir pieejama jauna diapazona cilpa. Tam ir divi parametri, diapazona deklarācija un diapazona_ izteiksme. To izmanto arī, lai atkārtoti izpildītu koda bloku diapazonā.

Sintakse

 for ( range_declaration : range_ expression ) { loop _statement; // statement to be executed; } 

Diapazona_deklarācija tiek izmantota, lai deklarētu mainīgā veidu, kas saistīts ar diapazona_izteiksmi (konteineru). Diapazona_izteiksme: tas ir gluži kā konteiners, kurā secīgi ir viena veida elementi. Loop_statement definē paziņojumu, kas tiek izpildīts cilpas iekšpusē.

Diapazona cilpas priekšrocības

  1. To ir viegli lietot, un arī tā sintakse ir vienkārša.
  2. Diapazonā balstītai cilpai nav nepieciešams aprēķināt elementu skaitu konteineros
  3. Tas atpazīst konteineru sākuma un beigu elementus.
  4. Mēs varam viegli mainīt konteinera izmēru un elementus.
  5. Tas nerada nevienu elementu kopiju.
  6. Tas ir daudz ātrāks nekā tradicionālā for loop.
  7. Tas parasti izmanto automātisko atslēgvārdu, lai atpazītu konteinera elementu datu tipu.

Uz diapazonu balstītas cilpas trūkums

  1. Tas nevar šķērsot kādu saraksta daļu.
  2. To nevar izmantot, lai pārvietotos apgrieztā secībā
  3. To nevar izmantot rādītājos.
  4. Tas nepiedāvā pašreizējo elementu indeksēšanu.