bucle para cada uno se utiliza para iterar sobre los elementos de un contenedor (matriz, vectores, etc.) rápidamente sin realizar inicialización, pruebas e incremento/disminución. El funcionamiento de los bucles foreach consiste en hacer algo para cada elemento en lugar de hacer algo n veces. No existe un bucle foreach en C, pero tanto C++ como Java admiten el tipo de bucle foreach. En C++, se introdujo en C++ 11 y Java en JDK 1.5.0. La palabra clave utilizada para cada bucle es para tanto en C++ como en Java.
Sintaxis:
for (data_type variable_name : container_name) { operations using variable_name }> Con la introducción de la palabra clave auto en C++ y la palabra clave var en Java, ya no necesitamos especificar el tipo de datos para la variable en el bucle foreach. La inferencia de tipos detecta el tipo de datos del contenedor y establece automáticamente el mismo tipo de datos para la variable utilizada para recorrer.
El siguiente código muestra el caso de uso del bucle foreach para diferentes contenedores junto con auto/lim palabras clave en C++/Java .
Programa C++/Java para matriz:
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<' '; }> |
>
>
Java
// 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+>' '>);> >}> }> |
>
>Producción
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>
Programa C++ para vectores:
C++
formulario completo de iskcon
#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;> }> |
>
>
idioma prólogoProducción
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.>
Programa Java para ArrayList:
Java
/*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 +>' '>);> >}> >}> }> |
>
>Producción
3 24 -134 -2 100>
Programa C++/Java para configurar:
C++
#include> #include> using> namespace> std;> int> main() {> >set<>int>>valor = {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; }> |
>
>
Java
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+>' '>);> >}> > >}> }> |
>
>Producción
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: Podemos usar diferentes tipos de datos en foreach para matriz, vector y conjunto.
Programa C++/Java para mapa:
C++14
#include> #include> using> namespace> std;> int> main() {> >map<>int>, string>mapaEjemplo;> >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: mapaEjemplo) {> >cout<' '< } cout<<'
Traversing the map with foreach using auto keyword
'; for (auto mpEx : mapExample){ cout<' '< } return 0; }> |
>
>
Java
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());> >}> }> |
>
>Producción
objeto a json en java
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>
Ventajas del bucle foreach:
- Hace que el código sea más legible.
- Elimina los errores de ejecución excesiva o insuficiente de los datos.
Desventaja del bucle foreach:
- No se pueden iterar sobre los elementos en orden inverso.
- Se accederá a todos y cada uno de los elementos, no se puede omitir ningún elemento intermedio.