C++ Range-based for sikli
C++ 11 diapazonli for siklini taqdim etdi. Ushbu for sikli massivlar va vektorlar kabi to'plamlar uchun maxsus ishlatiladi.
Masalan,
// int massivini ishga tushiring
int num[3] = {1, 2, 3};
// Ranged for loop va yuklash
for (int var : num) {
// kod
}
Bu yerda diapazonli for sikli boshidan oxirigacha massiv numni takrorlaydi. int o'zgaruvchisi var har bir iteratsiyada massiv elementining qiymatini saqlaydi.
Uning sintaksisi,
for (rangeDeclaration : rangeExpression) {
// kod
}
Yuqoridagi misolda,
int varWorking of ranged for loop in C++

#include <iostream>
using namespace std;
int main() {
// massivni ishga tushirish
int numArray[] = {1, 2, 3, 4, 5};
// massivni chop etish uchun intervalli for loop va yuklash
for (int n : numArray) {
cout << n << " ";
}
return 0;
}
Chiqish
1 2 3 4 5
Ushbu misolda biz numArray nomli int massivini e'lon qildik va ishga tushirdik. Bu erda biz numArray elementlarini chop etish uchun diapazonli for siklidan foydalandik.
-birinchi iteratsiya - n massivning birinchi a'zosining qiymatini oladi, bu 1
2 qiymatini oladi va keyin chop etiladi[!NOTE] Diapazonli
forsikli massivni boshidan oxirigacha avtomatik ravishda takrorlaydi. Biz sikldagi takrorlanishlar sonini ko'rsatishimiz shart emas.
#include <iostream>
#include <vector>
using namespace std;
int main() {
// vektorni e'lon qilish va ishga tushirish
vector<int> num_vector = {1, 2, 3, 4, 5};
// vektor elementlarini chop etish
for (int n : num_vector) {
cout << n << " ";
}
return 0;
}
Chiqish
1 2 3 4 5
#include <iostream>
using namespace std;
int main() {
// to'plamni siklning o'zida aniqlang
for (int n : {1, 2, 3, 4, 5}) {
cout << n << " ";
}
return 0;
}
Chiqish
1 2 3 4 5
Bu erda biz to'plamni siklning o'zida e'lon qildik, ya'ni.
rangeExpression = {1, 2, 3, 4, 5}
Bu, shuningdek, diapazonli for siklidan foydalanishning to'g'ri usulidir va u biz haqiqiy massiv yoki vektorni ishlatganimizdek ishlaydi.
Yuqoridagi misollarda biz for siklida to'plamning har bir elementini har bir iteratsiyada saqlash uchun o'zgaruvchini e'lon qildik.
int num[3] = {1, 2, 3};
//
for (int var : num) {
// kod
}
Biroq, diapazonli for loopini quyidagicha yozish yaxshidir:
// num elementlarining xotira joyiga kirish
for (int &var : num) {
// kod
}
Var.dan oldin & dan foydalanishga e'tibor bering. Bu yerga,
-int var : num - numning har bir elementini har bir iteratsiyada o'zgaruvchiga ko'chiradi. Bu kompyuter xotirasi uchun yaxshi emas.
-int &var : num - num ning har bir elementini var ga ko'chirmaydi. Buning o'rniga num elementlariga bevosita numning o'zidan kiradi. Bu samaraliroq.
[!NOTE]
&operatori mos yozuvlar operatori sifatida tanilgan. Bu haqda C++ pointers da ko'proq bilib olamiz.
Working of address pointing in C++ ranged for loop

[!NOTE] Agar biz sikl ichida massiv/vektor/to‘plamni o‘zgartirmasak, diapazon deklaratsiyasida
constkalit so‘zidan foydalangan ma’qul.// to'plam for siklida o'zgartirilmagan (const int &var : num) { // kod }