Šioje pamokoje su pavyzdžių pagalba sužinosime apie C ++ linijas ir jos geriausią praktiką.
C ++ 11 pristatė diapazoną for
. Ši for
kilpa specialiai naudojama tokioms kolekcijoms kaip masyvai ir vektoriai .
Pavyzdžiui,
// initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )
Čia for
diapazono kilpa pakartoja masyvo skaičių nuo pradžios iki pabaigos. int
Kintamasis var saugo iš masyvo elementu kiekvienoje iteracijoje vertę.
Jo sintaksė yra
for (rangeDeclaration : rangeExpression) ( // code )
Ankstesniame pavyzdyje
- diapazonas Deklaracija -
int var
- rangeExpression - skaičius

1 pavyzdys: diapazonas naudojamas naudojant masyvą
#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; )
Rezultatas
1 2 3 4 5
Šiame pavyzdyje mes paskelbėme ir inicijavome int
masyvą pavadinimu numArray. Čia mes panaudojome for
diapazono kilpą, kad išspausdintume numArray elementus.
- pirma iteracija - n ima pirmojo masyvo nario vertę, kuri yra
1
- antrasis kartojimas - n ima reikšmę,
2
tada atspausdinama ir pan.
Pastaba: Kilpos diapazonas automatiškai pakartoja masyvą nuo jo pradžios iki pabaigos. Mums nereikia nurodyti kartojimų skaičiaus cikle.
2 pavyzdys: C ++ diapazonas naudojamas naudojant vektorių
#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; )
Rezultatas
1 2 3 4 5
3 pavyzdys: deklaruokite kolekciją ciklo viduje
#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; )
Rezultatas
1 2 3 4 5
Čia mes deklaravome kolekciją pačiame cikle, t
rangeExpression = (1, 2, 3, 4, 5)
Tai taip pat yra tinkamas for
diapazono kilpos naudojimo būdas ir jis veikia taip pat, kaip ir tada, kai naudojame faktinį masyvą ar vektorių.
„C ++“ pasirinko geriausios praktikos pavyzdžius
Ankstesniuose pavyzdžiuose mes deklaravome kintamąjį, kad for
kiekvienas kolekcijos elementas būtų saugomas kiekvienoje iteracijoje.
int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )
Tačiau geriau parašyti diapazoną pagal kilpą taip:
// access memory location of elements of num for (int &var : num) ( // code )
Atkreipkite dėmesį į &
prieš var. Čia
int var : num
- Nukopijuoja kiekvieną numerio elementą į kintamąjį kintamąjį kiekvienoje iteracijoje. Tai nėra naudinga kompiuterio atminčiai.int &var : num
- Nekopijuoja kiekvieno numerio elemento į var. Vietoj to, num numerio elementus pasiekia tiesiogiai iš paties num. Tai yra efektyviau.
Pastaba:&
operatorius yra žinomas kaip atskaitos operatorius. Sužinosime daugiau apie tai C ++ rodyklėse.

Pastaba: Jei mes nemodifikuojame masyvo / vektoriaus / kolekcijos cikle, geriau naudoti const
raktinį žodį diapazono deklaracijoje.
// collection is not modified in the loop for (const int &var : num) ( // code )