Il ciclo for basato su intervallo in C++ è stato aggiunto a partire da C++ 11. Esegue un ciclo for su un intervallo. Utilizzato come equivalente più leggibile del tradizionale ciclo for che opera su un intervallo di valori, come tutti gli elementi in un contenitore.
for ( range_declaration : range_expression ) loop_statement Parameters : range_declaration : a declaration of a named variable, whose type is the type of the element of the sequence represented by range_expression, or a reference to that type. Often uses the auto specifier for automatic type deduction. range_expression : any expression that represents a suitable sequence or a braced-init-list. loop_statement : any statement, typically a compound statement, which is the body of the loop.>
Implementazione C++:
C++
// Illustration of range-for loop // using CPP code #include #include #include #include using namespace std; // Driver int main() { // Iterating over whole array vector v = {0, 1, 2, 3, 4, 5}; per (auto i: v) cout<< i << ' '; cout << '
'; // the initializer may be a braced-init-list for (int n : { 0, 1, 2, 3, 4, 5 }) cout << n << ' '; cout << '
'; // Iterating over array int a[] = { 0, 1, 2, 3, 4, 5 }; for (int n : a) cout << n << ' '; cout << '
'; // Just running a loop for every array // element for (int n : a) cout << 'In loop' << ' '; cout << '
'; // Printing string characters string str = 'Geeks'; for (char c : str) cout << c << ' '; cout << '
'; // Printing keys and values of a map map MAPPA({ { 1, 1 }, { 2, 2 }, { 3, 3 } }); per (auto i: MAP) cout<< '{' << i.first << ', ' << i.second << '}
'; }>
Produzione
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 In loop In loop In loop In loop In loop In loop G e e k s {1, 1} {2, 2} {3, 3}>
C++ 17 o versione successiva: I loop basati sull'intervallo possono essere utilizzati anche con mappe come queste:
for (auto& [key, value]: myMap) { cout << key << ' has value ' << value << std::endl; }>
Qui [chiave, valore] funziona come elementi di coppia a cui è possibile accedere direttamente senza specificare la prima o la seconda parola chiave.