У овом упутству ћемо научити о Ц ++ опсегу за петље и његовим најбољим праксама уз помоћ примера.
Ц ++ 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 )