Foreach v C++ a Javě

Foreach smyčka se používá k rychlému iterování prvků kontejneru (pole, vektory atd.) bez provádění inicializace, testování a zvyšování/snižování. Fungování smyček foreach je dělat něco pro každý prvek, spíše než dělat něco nkrát. V C není žádná smyčka foreach, ale C++ i Java podporují typ smyčky foreach. V C++ byl představen v C++ 11 a Java v JDK 1.5.0 Klíčové slovo používané pro foreach smyčku je pro jak v C++, tak v Javě.

Syntax:

for (data_type variable_name : container_name) { operations using variable_name } 

Se zavedením klíčového slova auto v C++ a klíčového slova var v Javě již nepotřebujeme specifikovat datový typ pro proměnnou ve smyčce foreach. Inference typu detekuje datový typ kontejneru a automaticky nastaví stejný datový typ pro proměnnou používanou k procházení.

Níže uvedený kód zobrazuje případ použití smyčky foreach pro různé kontejnery spolu s auto/lim klíčová slova v C++/Java .

Program C++/Java pro pole:

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 <' '; }>

Jáva




// 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+> );> > }> }>

Výstup

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 

C++ program pro vektor:

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;> }>

Výstup

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. 

Java program pro ArrayList:

Jáva




/*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 +> );> > }> > }> }>

Výstup

3 24 -134 -2 100 

C++/Java Program pro sadu:

C++




#include> #include> using> namespace> std;> int> main() {> > set <> int> >hodnota = {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; }>

Jáva




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+> );> > }> > > }> }>

Výstup

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 

Poznámka: Ve foreach můžeme použít různé datové typy pro pole, vektor a množinu.

C++/Java Program pro mapu:

C++14




#include> #include> using> namespace> std;> int> main() {> > map <> int> , string>mapExample;> > mapExample.insert(pair <> int> , string>(1,> 'Geeks'> ));> > mapExample.insert(pair <> int> , string>(2,>>> ));> > mapExample.insert(pair <> int> , string>(3,>>> ));> > mapExample.insert(pair <> int> , string>(4,>>> ));> > mapExample.insert(pair <> int> , string>(5,>>> ));> > mapExample.insert(pair <> int> , string>(6,>>> ));> > > 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; }>

Jáva




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());> > }> }>

Výstup

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 

Výhody foreach smyčky:

  • Učiní kód čitelnějším.
  • Eliminuje chyby přetečení nebo podběhnutí dat.

Nevýhoda foreach smyčky:

  • Nelze iterovat prvky v opačném pořadí.
  • Každý prvek bude přístupný, nelze přeskočit žádné prvky mezi nimi.