Foreach en C++ y Java

El bucle Foreach se utiliza para iterar sobre los elementos de un contenedor (array, vectores, etc.) rápidamente sin realizar la inicialización, la prueba y el incremento/decremento. El funcionamiento de los bucles foreach es hacer algo para cada elemento en lugar de hacer algo n veces. No hay un bucle foreach en C, pero tanto C++ como Java tienen soporte para el tipo de bucle foreach. En C++, se introdujo en C++ 11 y Java en JDK 1.5.0. La palabra clave utilizada para el bucle foreach es » for » tanto en C++ como en Java.  

Sintaxis:

for (tipo_datos nombre_variable: tipo_contenedor) {

     operaciones usando 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 en la variable utilizada para atravesar.

El siguiente código muestra el caso de uso del bucle foreach para diferentes contenedores junto con las palabras clave auto/var en C++/Java

Programa C++/Java para array: 

C++

// C++ program to demonstrate use of foreach for array
#include <iostream>
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<<x<<" ";
       
      // data type of x is set as int
    cout<<"\nTraversing the array with foreach using auto keyword     : ";
      for (auto x : arr)
      cout<<x<<" ";
}

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("\nTraversing 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 en C++ para vectores:

C++

#include <iostream>
#include <vector>
using namespace std;
 
int main() {
 
      vector<string> 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<<"\nTraversing the vector with foreach using auto keyword      : ";
      for (auto v : value)
      cout<<v<<" ";
    return 0;
}
Producció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 C++/Java para el conjunto:

C++

#include <iostream>
#include <set>
using namespace std;
 
int main() {
 
    set<int> value = {6, 2, 7, 4, 10, 5, 1};
   
    cout<<"Traversing the set with foreach using set's data type: ";
      for (int v : value) {
        cout<<v<<" ";
    }
   
    cout<<"\nTraversing the set with foreach using auto keyword   : ";
      for (auto v : value)
      cout<<v<<" ";
   
    return 0;
}

Java

import java.util.*;
   
public class GFG {
     
    public static void main(String[] args)
    {
        Set<String> hash_Set = new HashSet<String>();
        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("\nTraversing 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 array, vector y conjunto.

Programa C++/Java para el mapa:

C++14

#include <iostream>
#include <map>
using namespace std;
 
int main() {
 
      map<int, string> mapExample;
    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\n";
      for (pair<int, string> mpEx : mapExample ) {
        cout<<mpEx.first<<" "<<mpEx.second<<endl;
    }
   
    cout<<"\nTraversing the map with foreach using auto keyword\n";
      for (auto mpEx : mapExample){
        cout<<mpEx.first<<" "<<mpEx.second<<endl;
    }
   
    return 0;
}

Java

import java.io.*;
import java.util.Map;
import java.util.HashMap;
 
class GFG {
    public static void main (String[] args) {
        Map<Integer,String> gfg = new HashMap<Integer,String>();
       
        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<Integer, String> entry : gfg.entrySet())
                System.out.println(entry.getKey() + " " + entry.getValue());
       
          System.out.println("\nTraversing the map with foreach using auto keyword");
          for (var entry : gfg.entrySet())
                System.out.println(entry.getKey() + " " + entry.getValue());
    }
}
Producción

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 exceso o falta de datos.

Desventaja del bucle foreach:

  • No se puede 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.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *