Selles õpetuses tutvume näidete abil silmuste C ++ vahemiku ja selle parimate tavadega.
C ++ 11 tutvustas kaugussilmu for
. Seda for
silmust kasutatakse spetsiaalselt selliste kogumite jaoks nagu massiivid ja vektorid .
Näiteks,
// initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )
Siin for
kordab vahemiku silmus massiivi numbrit algusest lõpuni. int
Muutuja var salvestab väärtust massiivi element iga iteratsiooni.
Selle süntaks on
for (rangeDeclaration : rangeExpression) ( // code )
Ülaltoodud näites
- vahemikDeklaratsioon -
int var
- vahemikExpression - arv

Näide 1: vahemikus massiivi abil silmus
#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; )
Väljund
1 2 3 4 5
Selles näites deklareerisime ja initsialiseerisime int
massiivi nimega numArray. Siin kasutasime for
numArray elementide printimiseks vahemikku.
- esimene iteratsioon - n võtab massiivi esimese liikme väärtuse, mis on
1
- teine iteratsioon - n võtab väärtuse
2
ja seejärel prinditakse jne.
Märkus . Vahemiku vahemik kordab massiivi automaatselt selle algusest lõpuni. Me ei pea tsüklis korduste arvu määrama.
Näide 2: C ++ vahemikus vektoriga silmus
#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; )
Väljund
1 2 3 4 5
Näide 3: Kogumise deklareerimine aasas
#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; )
Väljund
1 2 3 4 5
Siin oleme deklareerinud kogu tsükli sees, st
rangeExpression = (1, 2, 3, 4, 5)
See on ka sobiv viis vahemikusilmu kasutamiseks for
ja see toimib samamoodi nagu tegeliku massiivi või vektori kasutamisel.
C ++ määrati parimate tavade jaoks
Eeltoodud näidetes oleme deklareerinud muutuja for
tsüklis, et salvestada kogu iteratsiooni kogu element.
int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )
Siiski on parem kirjutada vahemiku põhine silmus nii:
// access memory location of elements of num for (int &var : num) ( // code )
Pange tähele, et &
enne var. Siin,
int var : num
- Kopeerib num iga elemendi iga iteratsiooni muutuja var. See ei ole arvuti mälu jaoks hea.int &var : num
- ei kopeeri iga numbri elementi varisse. Selle asemel pääseb num-i elementidele juurde otse num-st. See on tõhusam.
Märkus . &
Operaator on tuntud kui võrdlusoperaator. Lisateavet selle kohta saate C ++ osutitest.

Märkus. Kui me ei muuda massiivi / vektorit / kogu tsüklis, on parem kasutada const
märksõna vahemiku deklaratsioonis.
// collection is not modified in the loop for (const int &var : num) ( // code )