C ++ v obsegu zanke (z primeri)

V tej vadnici bomo s pomočjo primerov spoznali C ++ za zanke in njegove najboljše prakse.

C ++ 11 je predstavil obsežno forzanko. Ta forzanka se posebej uporablja za zbirke, kot so nizi in vektorji .

Na primer

 // initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )

Tu forzanka z obsegom ponovi matriko številka od začetka do konca. intSpremenljivka var shrani vrednost matrike elementa v vsaki ponovitvi.

Njegova sintaksa je,

 for (rangeDeclaration : rangeExpression) ( // code )

V zgornjem primeru je

  • rangeDeclaration -int var
  • rangeExpression - štev
Delovanje zanke Range for v C ++

Primer 1: Obseg za zanko z uporabo polja

 #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; )

Izhod

 1 2 3 4 5

V tem primeru smo deklarirali in inicializirali intpolje z imenom numArray. Tu smo uporabili forzanko z obsegom za izpis elementov numArray.

  • prva ponovitev - n zavzame vrednost prvega člana polja, ki je1
  • druga ponovitev - n zavzame vrednost 2in se nato natisne itd.

Opomba: zanka Range for samodejno ponovi matriko od začetka do konca. Števila ponovitev v zanki ni treba določiti.

Primer 2: Razpon C ++ za zanko z vektorjem

 #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; )

Izhod

 1 2 3 4 5

Primer 3: Prijavite zbirko znotraj zanke

 #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; )

Izhod

 1 2 3 4 5

Tu smo razglasili zbirko znotraj same zanke, tj

 rangeExpression = (1, 2, 3, 4, 5)

To je tudi veljaven način uporabe obsežne forzanke in deluje na enak način kot kadar uporabimo dejansko matriko ali vektor.

C ++ uvrščen med najboljše prakse zanke

V zgornjih primerih smo v forzanki razglasili spremenljivko za shranjevanje vsakega elementa zbirke v vsaki ponovitvi.

 int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )

Vendar je bolje, da razpon, ki temelji na zanki, zapišete takole:

 // access memory location of elements of num for (int &var : num) ( // code )

Upoštevajte uporabo &pred var. Tukaj,

  • int var : num- Kopira vsak element num v spremenljivko var v vsaki ponovitvi. To ni dobro za računalniški pomnilnik.
  • int &var : num- Ne kopira vsakega elementa num v var. Namesto tega dostopa do elementov num neposredno iz samega num. To je bolj učinkovito.

Opomba:& operater je znan kot referenčno operaterja. Več o tem bomo izvedeli v kazalcih C ++.

Delovanje naslovov, usmerjenih v C ++, je obsegalo zanko

Opomba: Če v zanki ne spreminjamo polja / vektorja / zbirke, je bolje uporabiti constključno besedo v deklaraciji obsega.

 // collection is not modified in the loop for (const int &var : num) ( // code )

Zanimive Članki...