Foreach in C++ e Java
Per ogni ciclo viene utilizzato per scorrere rapidamente gli elementi di un contenitore (array, vettori, ecc.) senza eseguire inizializzazione, test e incremento/decremento. Il funzionamento dei cicli foreach è quello di fare qualcosa per ogni elemento piuttosto che fare qualcosa n volte. Non esiste un ciclo foreach in C, ma sia C++ che Java supportano il tipo di ciclo foreach. In C++, è stato introdotto in C++ 11 e Java in JDK 1.5.0. La parola chiave utilizzata per il ciclo foreach è per sia in C++ che in Java.
Sintassi:
for (data_type variable_name : container_name) { operations using variable_name } Con l'introduzione della parola chiave auto in C++ e della parola chiave var in Java, non è più necessario specificare il tipo di dati per la variabile nel ciclo foreach. L'inferenza del tipo rileva il tipo di dati del contenitore e imposta automaticamente lo stesso tipo di dati sulla variabile utilizzata per l'attraversamento.
Il codice seguente mostra il caso d'uso del ciclo foreach per diversi contenitori insieme a auto/lim parole chiave in C++/Java .
Programma C++/Java per la matrice:
C++
// C++ program to demonstrate use of foreach for array> #include> using> namespace> std;> int> main()> {> > int> arr[] = { 10, 20, 30, 40 };> > // Printing elements of an array using> > // foreach loop> > // Here, int is the data type, x is the variable name> > // and arr is the array for which we want to iterate foreach> > cout < <> 'Traversing the array with foreach using array's data type: '> ;> > for> (> int> x : arr)> > cout <' '; // data type of x is set as int cout < <'
Traversing the array with foreach using auto keyword : '; for (auto x : arr) cout <' '; }> |
Giava
// Java program to demonstrate use of foreach> public> class> Main {> > public> static> void> main(String[] args)> > {> > // Declaring 1-D array with size 4> > int> arr[] = {> 10> ,> 20> ,> 30> ,> 40> };> > // Printing elements of an array using> > // foreach loop> > // Here, int is the data type, x is the variable name> > // and arr is the array for which we want to iterate foreach> > System.out.print(> 'Traversing the array with foreach using array's data type: '> );> > for> (> int> x : arr)> > System.out.print(x+> ' '> );> > > // data type of x is set as int> > System.out.print(> '
Traversing the array with foreach using auto keyword : '> );> > for> (var x : arr)> > System.out.print(x+> ' '> );> > }> }> |
Produzione
Traversing the array with foreach using array's data type: 10 20 30 40 Traversing the array with foreach using auto keyword : 10 20 30 40
Programma C++ per vettore:
C++
#include> #include> using> namespace> std;> int> main()> {> > vector value{> 'This'> ,> 'is'> ,> 'foreach'> ,> > 'example'> ,> 'using'> ,> 'vector.'> };> > cout < <> 'Traversing the vector with foreach using '> > 'vector's data type: '> ;> > for> (string v : value) {> > cout < < v < <> ' '> ;> > }> > cout < <> '
Traversing the vector with foreach using '> > 'auto keyword : '> ;> > for> (> auto> v : value)> > cout < < v < <> ' '> ;> > return> 0;> }> |
Produzione
Traversing the vector with foreach using vector's data type: This is foreach example using vector. Traversing the vector with foreach using auto keyword : This is foreach example using vector.
Programma Java per ArrayList:
Giava
/*package whatever //do not write package name here */> import> java.util.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > ArrayList list => new> ArrayList();> > list.add(> 3> );> > list.add(> 24> );> > list.add(-> 134> );> > list.add(-> 2> );> > list.add(> 100> );> > for> (> int> element : list) {> > System.out.print(element +> ' '> );> > }> > }> }> |
Produzione
3 24 -134 -2 100
Programma C++/Java per set:
C++
#include> #include> using> namespace> std;> int> main() {> > set <> int> >valore = {6, 2, 7, 4, 10, 5, 1};> > > cout < <> 'Traversing the set with foreach using set's data type: '> ;> > for> (> int> v : value) {> > cout <' '; } cout < <'
Traversing the set with foreach using auto keyword : '; for (auto v : value) cout <' '; return 0; }> |
Giava
import> java.util.*;> > public> class> GFG {> > > public> static> void> main(String[] args)> > {> > Set hash_Set => new> HashSet();> > hash_Set.add(> 'Geeks'> );> > hash_Set.add(> 'For'> );> > hash_Set.add(> 'Geeks'> );> > hash_Set.add(> 'Foreach'> );> > hash_Set.add(> 'Example'> );> > hash_Set.add(> 'Set'> );> > > System.out.print(> 'Traversing the set with foreach using set's data type: '> );> > for> (String hs : hash_Set) {> > System.out.print(hs+> ' '> );> > }> > > System.out.print(> '
Traversing the set with foreach using auto keyword : '> );> > for> (var hs : hash_Set) {> > System.out.print(hs+> ' '> );> > }> > > }> }> |
Produzione
Traversing the set with foreach using set's data type: 1 2 4 5 6 7 10 Traversing the set with foreach using auto keyword : 1 2 4 5 6 7 10
Nota: Possiamo utilizzare diversi tipi di dati in foreach per array, vettore e set.
Programma C++/Java per la mappa:
C++14
#include> #include> using> namespace> std;> int> main() {> > map <> int> , string>mapEsempio;> > mapExample.insert(pair <> int> , string>(1,> 'Geeks'> ));> > mapExample.insert(pair <> int> , string>(2,> '4'> ));> > mapExample.insert(pair <> int> , string>(3,> 'Geeks'> ));> > mapExample.insert(pair <> int> , string>(4,> 'Map'> ));> > mapExample.insert(pair <> int> , string>(5,> 'Foreach'> ));> > mapExample.insert(pair <> int> , string>(6,> 'Example'> ));> > > cout < <> 'Traversing the map with foreach using map's data type
'> ;> > for> (pair <> int> , string>mpEx: mapExample ) {> > cout <' ' < } cout < <'
Traversing the map with foreach using auto keyword
'; for (auto mpEx : mapExample){ cout <' ' < } return 0; }> |
Giava
import> java.io.*;> import> java.util.Map;> import> java.util.HashMap;> class> GFG {> > public> static> void> main (String[] args) {> > Map gfg => new> HashMap();> > > gfg.put(> 1> ,> 'Geeks'> );> > gfg.put(> 2> ,> '4'> );> > gfg.put(> 3> ,> 'Geeks'> );> > gfg.put(> 4> ,> 'Map'> );> > gfg.put(> 5> ,> 'Foreach'> );> > gfg.put(> 6> ,> 'Example'> );> > > System.out.println(> 'Traversing the map with foreach using map's data type'> );> > for> (Map.Entry entry : gfg.entrySet())> > System.out.println(entry.getKey() +> ' '> + entry.getValue());> > > System.out.println(> '
Traversing the map with foreach using auto keyword'> );> > for> (var entry : gfg.entrySet())> > System.out.println(entry.getKey() +> ' '> + entry.getValue());> > }> }> |
Produzione
Traversing the map with foreach using map's data type 1 Geeks 2 4 3 Geeks 4 Map 5 Foreach 6 Example Traversing the map with foreach using auto keyword 1 Geeks 2 4 3 Geeks 4 Map 5 Foreach 6 Example
Vantaggi del ciclo foreach:
- Rende il codice più leggibile.
- Elimina gli errori dovuti al sovraccarico o alla sottoesecuzione dei dati.
Svantaggio del ciclo foreach:
- Impossibile scorrere gli elementi in ordine inverso.
- Sarà possibile accedere a ogni singolo elemento, non è possibile saltare alcun elemento intermedio.