Bucla foreach este folosită pentru a repeta rapid elementele unui container (matrice, vectori etc.) fără a efectua inițializare, testare sau creștere/decrementare. Buclele Foreach funcționează făcând ceva pentru fiecare element, mai degrabă decât făcând ceva de n ori. Deși nu există o buclă foreach în C, aceasta este acceptată de C++ și Java. A fost introdus pentru prima dată în C++ în C++ 11 și în Java în JDK 1.5.0. Atât în C++ cât și în Java, cuvântul cheie pentru bucla foreach este „for”.
Sintaxă
for (data_type variable_name : container_type) { operations using variable_name }
Nu mai trebuie să specificăm tipul de date pentru variabile în buclele foreach datorită introducerii cuvântului cheie auto în C++ și a cuvântului cheie var în Java. Inferența tip detectează tipul de date al containerului și setează variabila utilizată pentru parcurgere la același tip de date.
Codul de mai jos demonstrează utilizarea unei bucle foreach pentru diferite containere, precum și cuvintele cheie auto/var în C++/Java.
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<<x<<' type of is set as int cout<<' traversing auto keyword (auto } < pre> <h3>JAVA</h3> <pre> // 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+' '); } } </pre> <p> <strong>Output</strong> </p> <pre> 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 </pre> <h3>Vector C++ programme:</h3> <pre> #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 auto keyword (auto return 0; < pre> <p> <strong>Output</strong> </p> <pre> 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. </pre> <h2>C++/Java Set Program:</h2> <h3>C++</h3> <pre> #include #include using namespace std; int main() { set 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<<' traversing auto keyword (auto return 0; < pre> <h3>JAVA</h3> <pre> 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+' '); } } } </pre> <p> <strong>Output</strong> </p> <pre> 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 </pre> <p>For array, vector, and set, we can use different data types in foreach.</p> <h2>C++/Java Map Program:</h2> <h3>C++</h3> <pre> #include #include using namespace std; int main() { map mapExample; mapExample.insert(pair(1, 'Geeks')); mapExample.insert(pair(2, '4')); mapExample.insert(pair(3, 'Geeks')); mapExample.insert(pair(4, 'Map')); mapExample.insert(pair(5, 'Foreach')); mapExample.insert(pair(6, 'Example')); cout<<'traversing the map with foreach using map's data type '; for (pair mpex : mapexample ) { cout<<mpex.first<<' '<<mpex.second<<endl; } cout<<' traversing auto keyword '; (auto mapexample){ return 0; < pre> <h3>JAVA</h3> <pre> 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()); } } </pre> <p> <strong>Output</strong> </p> <pre> 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 </pre> <h3>Foreach loop has the following advantages:</h3> <ul> <li>This improves the readability of the code.</li> <li>Removes the possibility of data over- or under-running errors.</li> </ul> <h3>Foreach loop has the following disadvantage:</h3> <ul> <li>It is not possible to iterate over the elements in reverse order.</li> <li>Every element will be accessed; no elements in between will be skipped.</li> </ul> <hr></'traversing></pre></'traversing></pre></'traversing></pre></'traversing>
Ieșire
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
Programul Vector 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 auto keyword (auto return 0; < pre> <p> <strong>Output</strong> </p> <pre> 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. </pre> <h2>C++/Java Set Program:</h2> <h3>C++</h3> <pre> #include #include using namespace std; int main() { set 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<<\' traversing auto keyword (auto return 0; < pre> <h3>JAVA</h3> <pre> 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+' '); } } } </pre> <p> <strong>Output</strong> </p> <pre> 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 </pre> <p>For array, vector, and set, we can use different data types in foreach.</p> <h2>C++/Java Map Program:</h2> <h3>C++</h3> <pre> #include #include using namespace std; int main() { map mapExample; mapExample.insert(pair(1, 'Geeks')); mapExample.insert(pair(2, '4')); mapExample.insert(pair(3, 'Geeks')); mapExample.insert(pair(4, 'Map')); mapExample.insert(pair(5, 'Foreach')); mapExample.insert(pair(6, 'Example')); cout<<\'traversing the map with foreach using map\'s data type \'; for (pair mpex : mapexample ) { cout<<mpex.first<<\' \'<<mpex.second<<endl; } cout<<\' traversing auto keyword \'; (auto mapexample){ return 0; < pre> <h3>JAVA</h3> <pre> 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()); } } </pre> <p> <strong>Output</strong> </p> <pre> 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 </pre> <h3>Foreach loop has the following advantages:</h3> <ul> <li>This improves the readability of the code.</li> <li>Removes the possibility of data over- or under-running errors.</li> </ul> <h3>Foreach loop has the following disadvantage:</h3> <ul> <li>It is not possible to iterate over the elements in reverse order.</li> <li>Every element will be accessed; no elements in between will be skipped.</li> </ul> <hr></\'traversing></pre></\'traversing></pre></\'traversing>
Programul C++/Java Set:
C++
#include #include using namespace std; int main() { set 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<<\' traversing auto keyword (auto return 0; < pre> <h3>JAVA</h3> <pre> 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+' '); } } } </pre> <p> <strong>Output</strong> </p> <pre> 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 </pre> <p>For array, vector, and set, we can use different data types in foreach.</p> <h2>C++/Java Map Program:</h2> <h3>C++</h3> <pre> #include #include using namespace std; int main() { map mapExample; mapExample.insert(pair(1, 'Geeks')); mapExample.insert(pair(2, '4')); mapExample.insert(pair(3, 'Geeks')); mapExample.insert(pair(4, 'Map')); mapExample.insert(pair(5, 'Foreach')); mapExample.insert(pair(6, 'Example')); cout<<\'traversing the map with foreach using map\'s data type \'; for (pair mpex : mapexample ) { cout<<mpex.first<<\' \'<<mpex.second<<endl; } cout<<\' traversing auto keyword \'; (auto mapexample){ return 0; < pre> <h3>JAVA</h3> <pre> 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()); } } </pre> <p> <strong>Output</strong> </p> <pre> 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 </pre> <h3>Foreach loop has the following advantages:</h3> <ul> <li>This improves the readability of the code.</li> <li>Removes the possibility of data over- or under-running errors.</li> </ul> <h3>Foreach loop has the following disadvantage:</h3> <ul> <li>It is not possible to iterate over the elements in reverse order.</li> <li>Every element will be accessed; no elements in between will be skipped.</li> </ul> <hr></\'traversing></pre></\'traversing>
Ieșire
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
Pentru matrice, vector și set, putem folosi diferite tipuri de date în foreach.
Programul C++/Java Map:
C++
#include #include using namespace std; int main() { map mapExample; mapExample.insert(pair(1, 'Geeks')); mapExample.insert(pair(2, '4')); mapExample.insert(pair(3, 'Geeks')); mapExample.insert(pair(4, 'Map')); mapExample.insert(pair(5, 'Foreach')); mapExample.insert(pair(6, 'Example')); cout<<\\'traversing the map with foreach using map\\'s data type \\'; for (pair mpex : mapexample ) { cout<<mpex.first<<\\' \\'<<mpex.second<<endl; } cout<<\\' traversing auto keyword \\'; (auto mapexample){ return 0; < pre> <h3>JAVA</h3> <pre> 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()); } } </pre> <p> <strong>Output</strong> </p> <pre> 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 </pre> <h3>Foreach loop has the following advantages:</h3> <ul> <li>This improves the readability of the code.</li> <li>Removes the possibility of data over- or under-running errors.</li> </ul> <h3>Foreach loop has the following disadvantage:</h3> <ul> <li>It is not possible to iterate over the elements in reverse order.</li> <li>Every element will be accessed; no elements in between will be skipped.</li> </ul> <hr></\\'traversing>
Ieșire
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
Bucla Foreach are următoarele avantaje:
- Acest lucru îmbunătățește lizibilitatea codului.
- Îndepărtează posibilitatea erorilor de supra- sau sub rulare a datelor.
Bucla Foreach are următorul dezavantaj:
- Nu este posibil să repetați elementele în ordine inversă.
- Fiecare element va fi accesat; niciun element intermediar nu va fi omis.
\\'traversing>\'traversing>\'traversing>'traversing>