У овој теми ћемо разговарати о петљи фор заснованој на опсегу у програмском језику Ц++. Језик Ц++ увео је нови концепт петље фор заснован на опсегу у Ц++11 и каснијим верзијама, који је много бољи од обичне Фор петље. Фор петља заснована на опсегу не захтева велико кодирање за имплементацију итерације за петљу. То је секвенцијални итератор који је понављао сваки елемент контејнера у опсегу (од почетка до краја).
Синтакса
for (range_declaration : range_expression ) loop statement
Напомена: Ако не знамо тип података елемената контејнера, можемо да користимо кључну реч ауто која аутоматски идентификује тип података за опсег_израза.
Програм за штампање сваког елемента низа користећи опсег на основу фор петље
Хајде да размотримо пример за штампање инт и двоструког низа користећи петљу фор засновану на опсегу у Ц++.
програм.цпп
#include using namespace std; int main () { int arr1 [5] = { 10, 20, 30, 40, 50}; double darr [5] = { 2.4, 4.5, 1.5, 3.5, 4.0 }; // use range based for loop for ( const auto &var : arr1 ) { cout << var << ' ' ; } // use auto keyword to automatically specify the data type of darr container. for ( const auto &var : darr ) { cout << var << ' ' ; } return 0; }
Излаз
10 20 30 40 50 2.4 4.5 1.5 3.5 4.0
Програм за демонстрирање вектора у опсегу на основу фор петље
Хајде да напишемо једноставан програм за имплементацију вектора у опсегу заснованом на фор петљи.
Програм2.цпп
андроид.процесс.ацоре стално стаје
#include #include using namespace std; int main() { int x; // declare integer variable // declare vector variable vector vect = {5, 10 , 25, 20, 25}; // display vector elements for ( int x : vect) { cout << x << ' '; } return 0; }
Излаз
5 10 25 20 25
Програм за штампање низова користећи круг заснован на опсегу фор у Ц++ са референцом
Хајде да размотримо пример за штампање елемената низа користећи опсег заснован на петљи фор у Ц++.
Програм3.цпп
#include #include #include using namespace std; int main(){ array data = {1, 3, -2, 4, 6, 7, 9}; cout << ' Before updating the elements: ' << endl; for (int x : data){ cout << x << ' '; } // pass the references for (int &itemRef : data){ itemRef *= 3; } cout << endl << ' After modification of the elements: ' << endl; for (int x : data){ cout << x << ' '; } cout << endl; return 0; }
Излаз
Before updating the elements: 1 3 -2 4 6 7 9 After modification of the elements: 3 9 -6 12 18 21 27
Угнежђени опсег заснован на петљи фор
Када је петља дефинисана унутар тела друге петље, петља се назива угнежђена фор петља. Слично томе, када дефинишемо опсег у петљи унутар друге петље засноване на опсегу, техника је позната као угнежђена петља заснована на опсегу.
Синтакса:
for ( int x : range_expression) // outer loop { for ( int y : range_expression) // inner loop { // statement to be executed } // statement to be executed }
У горњој синтакси дефинишемо једну петљу фор засновану на опсегу унутар друге петље. Овде у Ц++-у називамо петљу фор засновану на унутрашњем и спољашњем опсегу.
Програм за штампање угнежђеног опсега заснованог на петљи фор у Ц++
Размотрите пример за демонстрирање угнежђеног опсега заснованог на петљи фор у програмском језику Ц++.
Ранге.цпп
#include using namespace std; int main () { int arr1[4] = { 0, 1, 2, 3 }; int arr2[5] = { 1, 2, 3, 4, 5 }; // use nested range based for loop for ( int x : arr1 ) { // declare nested loop for ( int y : arr2 ) { cout << ' x = ' << x << ' and j = ' << y << endl; } } return 0; }
Излаз
x = 0 and j = 1 x = 0 and j = 2 x = 0 and j = 3 x = 0 and j = 4 x = 0 and j = 5 x = 1 and j = 1 x = 1 and j = 2 x = 1 and j = 3 x = 1 and j = 4 x = 1 and j = 5 x = 2 and j = 1 x = 2 and j = 2 x = 2 and j = 3 x = 2 and j = 4 x = 2 and j = 5 x = 3 and j = 1 x = 3 and j = 2 x = 3 and j = 3 x = 3 and j = 4 x = 3 and j = 5
Која је разлика између традиционалне фор петље и петље засноване на опсегу?
А традиционална фор петља користи се за понављање извршавања блока кода док се наведени услов не испуни. Традиционална фор петља има три параметра, иницијализацију променљиве, наведите услов, а последњи је бројач који се повећава за један ако услов остане тачан.
Синтакса:
for ( variable_initialization; specify_condition; updated_counter) { // statement to be executed; }
Петља заснована на опсегу
С друге стране, имамо нову фор петљу засновану на опсегу доступну у Ц++ 11 и новијој верзији. Има два параметра, декларацију опсега и израз ранге_. Такође се користи за узастопно извршавање блока кода у опсегу.
преименуј линукс фасциклу
Синтакса
for ( range_declaration : range_ expression ) { loop _statement; // statement to be executed; }
Ранг_децларатион се користи за декларисање типа променљиве повезане са ранге_екпрессион (контејнер). Ранг_екпрессион: То је исто као контејнер који садржи исте типове елемената на секвенцијални начин. лооп_статемент дефинише наредбу која се извршава унутар фор петље.
Предности петље фор засноване на опсегу
- Једноставан је за коришћење, а његова синтакса је такође једноставна.
- Фор петља заснована на опсегу не захтева израчунавање броја елемената у контејнеру
- Препознаје почетне и завршне елементе контејнера.
- Можемо лако да променимо величину и елементе контејнера.
- Не ствара никакву копију елемената.
- Много је бржи од традиционалне фор петље.
- Обично користи кључну реч ауто за препознавање типа података елемената контејнера.
Недостатак петље фор засноване на опсегу
- Не може да пређе део листе.
- Не може се користити за кретање обрнутим редоследом
- Не може се користити у показивачима.
- Не нуди индексирање тренутних елемената.