У овом упутству ћемо научити о Ц ++ опсегу за петље и његовим најбољим праксама уз помоћ примера.
Ц ++ 11 је представио рангирану forпетљу. Ова forпетља се посебно користи за колекције као што су низови и вектори .
На пример,
// initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )
Овде рангирана forпетља понавља низ низа од почетка до краја. intПроменљива вар чува вредност низа елемента у свакој итерацији.
Његова синтакса је,
for (rangeDeclaration : rangeExpression) ( // code )
У горњем примеру,
- рангеДецларатион -
int var - рангеЕкпрессион - нум
Рад петље Ранге фор у Ц ++
Пример 1: Распон за петљу помоћу низа
#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; )
Оутпут
1 2 3 4 5
У овом примеру смо декларисали и иницијализовали intниз назван нумАрраи. Овде смо користили forпетљу Ранге за испис елемената нумАрраи.
- прва итерација - н узима вредност првог члана низа, што је
1 - друга итерација - н узима вредност,
2а затим се штампа и тако даље.
Напомена: Петља за опсег фор аутоматски понавља низ од почетка до краја. Не треба да наводимо број итерација у петљи.
Пример 2: Ц ++ распон за петљу помоћу вектора
#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; )
Оутпут
1 2 3 4 5
Пример 3: Пријавите колекцију унутар петље
#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; )
Оутпут
1 2 3 4 5
Овде смо прогласили колекцију унутар саме петље, тј
rangeExpression = (1, 2, 3, 4, 5)
Ово је такође важећи начин употребе forпетље са опсегом и ради на исти начин као када користимо стварни низ или вектор.
Ц ++ је рангиран за најбоље праксе петље
У горњим примерима прогласили смо променљиву у forпетљи за чување сваког елемента колекције у свакој итерацији.
int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )
Међутим, боље је написати рангирано засновано на петљу овако:
// access memory location of elements of num for (int &var : num) ( // code )
Обратите пажњу на употребу &пре вар. Ево,
int var : num- Копира сваки елемент нум у променљиву вар у свакој итерацији. Ово није добро за меморију рачунара.int &var : num- Не копира сваки елемент нум у вар. Уместо тога, приступа елементима нум директно из самог нум. Ово је ефикасније.
Напомена:& оператер познат као референтна оператор. О томе ћемо сазнати више у Ц ++ показивачима.
Рад адреса усмјерен на Ц ++ кретао се у кругу петље
Напомена: Ако не мењамо низ / вектор / колекцију унутар петље, боље је користити constкључну реч у декларацији опсега.
// collection is not modified in the loop for (const int &var : num) ( // code )








