logo

Foreach ב-C++ ו-JAVA

הלולאה הקדמית משמשת לחזרה מהירה על הרכיבים של מיכל (מערך, וקטורים וכו') מבלי לבצע אתחול, בדיקה או הגדלה/הפחתה. לולאות קדמיות פועלות על ידי ביצוע משהו עבור כל אלמנט במקום לעשות משהו n פעמים. למרות שאין לולאה קדמית ב-C, היא נתמכת על ידי C++ ו-Java. זה הוצג לראשונה ב-C++ ב-C++ 11, וב-Java ב-JDK 1.5.0. גם ב-C++ וגם ב-Java, מילת המפתח עבור לולאה קדמית היא 'for'.

תחביר

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

אנחנו כבר לא צריכים לציין את סוג הנתונים עבור משתנים בכל לולאות הודות להכנסת מילת המפתח האוטומטית ב-C++ ומילת המפתח var ב-Java. מסקנת סוג מזהה את סוג הנתונים של המיכל ומגדירה את המשתנה המשמש למעבר לאותו סוג נתונים.

הקוד שלהלן מדגים את השימוש בלולאה קדמית עבור מיכלים שונים, כמו גם את מילות המפתח auto/var ב-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&lt;<'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(&apos;Traversing the array with foreach using array&apos;s data type: &apos;); for (int x : arr) System.out.print(x+&apos; &apos;); // data type of x is set as int System.out.print(&apos;
Traversing the array with foreach using auto keyword : &apos;); for (var x : arr) System.out.print(x+&apos; &apos;); } } </pre> <p> <strong>Output</strong> </p> <pre> Traversing the array with foreach using array&apos;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{&apos;This&apos;, &apos;is&apos;, &apos;foreach&apos;, &apos;example&apos;, &apos;using&apos;, &apos;vector.&apos;}; cout&lt;<'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&apos;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&lt;<'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(&apos;Geeks&apos;); hash_Set.add(&apos;For&apos;); hash_Set.add(&apos;Geeks&apos;); hash_Set.add(&apos;Foreach&apos;); hash_Set.add(&apos;Example&apos;); hash_Set.add(&apos;Set&apos;); System.out.print(&apos;Traversing the set with foreach using set&apos;s data type: &apos;); for(String hs : hash_Set) { System.out.print(hs+&apos; &apos;); } System.out.print(&apos;
Traversing the set with foreach using auto keyword : &apos;); for (var hs : hash_Set) { System.out.print(hs+&apos; &apos;); } } } </pre> <p> <strong>Output</strong> </p> <pre> Traversing the set with foreach using set&apos;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, &apos;Geeks&apos;)); mapExample.insert(pair(2, &apos;4&apos;)); mapExample.insert(pair(3, &apos;Geeks&apos;)); mapExample.insert(pair(4, &apos;Map&apos;)); mapExample.insert(pair(5, &apos;Foreach&apos;)); mapExample.insert(pair(6, &apos;Example&apos;)); cout&lt;<'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, &apos;Geeks&apos;); gfg.put(2, &apos;4&apos;); gfg.put(3, &apos;Geeks&apos;); gfg.put(4, &apos;Map&apos;); gfg.put(5, &apos;Foreach&apos;); gfg.put(6, &apos;Example&apos;); System.out.println(&apos;Traversing the map with foreach using map&apos;s data type&apos;); for (Map.Entry entry : gfg.entrySet()) System.out.println(entry.getKey() + &apos; &apos; + entry.getValue()); System.out.println(&apos;
Traversing the map with foreach using auto keyword&apos;); for (var entry : gfg.entrySet()) System.out.println(entry.getKey() + &apos; &apos; + entry.getValue()); } } </pre> <p> <strong>Output</strong> </p> <pre> Traversing the map with foreach using map&apos;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>

תְפוּקָה

 Traversing the array with foreach using array&apos;s data type: 10 20 30 40 Traversing the array with foreach using auto keyword : 10 20 30 40 

תוכנית וקטור C++:

 #include #include using namespace std; int main() { vector value{&apos;This&apos;, &apos;is&apos;, &apos;foreach&apos;, &apos;example&apos;, &apos;using&apos;, &apos;vector.&apos;}; cout&lt;<\'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&apos;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&lt;<\'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(&apos;Geeks&apos;); hash_Set.add(&apos;For&apos;); hash_Set.add(&apos;Geeks&apos;); hash_Set.add(&apos;Foreach&apos;); hash_Set.add(&apos;Example&apos;); hash_Set.add(&apos;Set&apos;); System.out.print(&apos;Traversing the set with foreach using set&apos;s data type: &apos;); for(String hs : hash_Set) { System.out.print(hs+&apos; &apos;); } System.out.print(&apos;
Traversing the set with foreach using auto keyword : &apos;); for (var hs : hash_Set) { System.out.print(hs+&apos; &apos;); } } } </pre> <p> <strong>Output</strong> </p> <pre> Traversing the set with foreach using set&apos;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, &apos;Geeks&apos;)); mapExample.insert(pair(2, &apos;4&apos;)); mapExample.insert(pair(3, &apos;Geeks&apos;)); mapExample.insert(pair(4, &apos;Map&apos;)); mapExample.insert(pair(5, &apos;Foreach&apos;)); mapExample.insert(pair(6, &apos;Example&apos;)); cout&lt;<\'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, &apos;Geeks&apos;); gfg.put(2, &apos;4&apos;); gfg.put(3, &apos;Geeks&apos;); gfg.put(4, &apos;Map&apos;); gfg.put(5, &apos;Foreach&apos;); gfg.put(6, &apos;Example&apos;); System.out.println(&apos;Traversing the map with foreach using map&apos;s data type&apos;); for (Map.Entry entry : gfg.entrySet()) System.out.println(entry.getKey() + &apos; &apos; + entry.getValue()); System.out.println(&apos;
Traversing the map with foreach using auto keyword&apos;); for (var entry : gfg.entrySet()) System.out.println(entry.getKey() + &apos; &apos; + entry.getValue()); } } </pre> <p> <strong>Output</strong> </p> <pre> Traversing the map with foreach using map&apos;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>

תוכנית C++/Java Set:

C++

 #include #include using namespace std; int main() { set value = {6, 2, 7, 4, 10, 5, 1}; cout&lt;<\'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(&apos;Geeks&apos;); hash_Set.add(&apos;For&apos;); hash_Set.add(&apos;Geeks&apos;); hash_Set.add(&apos;Foreach&apos;); hash_Set.add(&apos;Example&apos;); hash_Set.add(&apos;Set&apos;); System.out.print(&apos;Traversing the set with foreach using set&apos;s data type: &apos;); for(String hs : hash_Set) { System.out.print(hs+&apos; &apos;); } System.out.print(&apos;
Traversing the set with foreach using auto keyword : &apos;); for (var hs : hash_Set) { System.out.print(hs+&apos; &apos;); } } } </pre> <p> <strong>Output</strong> </p> <pre> Traversing the set with foreach using set&apos;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, &apos;Geeks&apos;)); mapExample.insert(pair(2, &apos;4&apos;)); mapExample.insert(pair(3, &apos;Geeks&apos;)); mapExample.insert(pair(4, &apos;Map&apos;)); mapExample.insert(pair(5, &apos;Foreach&apos;)); mapExample.insert(pair(6, &apos;Example&apos;)); cout&lt;<\'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, &apos;Geeks&apos;); gfg.put(2, &apos;4&apos;); gfg.put(3, &apos;Geeks&apos;); gfg.put(4, &apos;Map&apos;); gfg.put(5, &apos;Foreach&apos;); gfg.put(6, &apos;Example&apos;); System.out.println(&apos;Traversing the map with foreach using map&apos;s data type&apos;); for (Map.Entry entry : gfg.entrySet()) System.out.println(entry.getKey() + &apos; &apos; + entry.getValue()); System.out.println(&apos;
Traversing the map with foreach using auto keyword&apos;); for (var entry : gfg.entrySet()) System.out.println(entry.getKey() + &apos; &apos; + entry.getValue()); } } </pre> <p> <strong>Output</strong> </p> <pre> Traversing the map with foreach using map&apos;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>

תְפוּקָה

 Traversing the set with foreach using set&apos;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 

עבור מערך, וקטור וקבוצה, אנו יכולים להשתמש בסוגי נתונים שונים בכל אחד.

תוכנית מפות C++/Java:

C++

 #include #include using namespace std; int main() { map mapExample; mapExample.insert(pair(1, &apos;Geeks&apos;)); mapExample.insert(pair(2, &apos;4&apos;)); mapExample.insert(pair(3, &apos;Geeks&apos;)); mapExample.insert(pair(4, &apos;Map&apos;)); mapExample.insert(pair(5, &apos;Foreach&apos;)); mapExample.insert(pair(6, &apos;Example&apos;)); cout&lt;<\\'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, &apos;Geeks&apos;); gfg.put(2, &apos;4&apos;); gfg.put(3, &apos;Geeks&apos;); gfg.put(4, &apos;Map&apos;); gfg.put(5, &apos;Foreach&apos;); gfg.put(6, &apos;Example&apos;); System.out.println(&apos;Traversing the map with foreach using map&apos;s data type&apos;); for (Map.Entry entry : gfg.entrySet()) System.out.println(entry.getKey() + &apos; &apos; + entry.getValue()); System.out.println(&apos;
Traversing the map with foreach using auto keyword&apos;); for (var entry : gfg.entrySet()) System.out.println(entry.getKey() + &apos; &apos; + entry.getValue()); } } </pre> <p> <strong>Output</strong> </p> <pre> Traversing the map with foreach using map&apos;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>

תְפוּקָה

 Traversing the map with foreach using map&apos;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 

לכל לולאה יש את היתרונות הבאים:

  • זה משפר את קריאות הקוד.
  • מסיר את האפשרות של שגיאות ריצה יתר או חסרת נתונים.

לכל לולאה יש את החיסרון הבא:

  • לא ניתן לבצע איטרציה על האלמנטים בסדר הפוך.
  • כל אלמנט יקבל גישה; לא ידלגו על רכיבים שביניהם.