logo

מבוסס טווח עבור לולאה ב-C++

בנושא זה, נדון בלולאה המבוססת על טווח בשפת התכנות C++. שפת C++ הציגה קונספט חדש של לולאה מבוססת טווח ב-C++11 ובגרסאות מאוחרות יותר, שהוא הרבה יותר טוב מלולאת For רגילה. לולאה מבוססת טווח אינה דורשת קידוד גדול כדי ליישם עבור איטרציה של לולאה. זהו איטרטור רציף שחזר על כל רכיב של המיכל על פני טווח (מההתחלה ועד הסוף).

מבוסס טווח עבור לולאה ב-C++

תחביר

 for (range_declaration : range_expression ) loop statement 
    range_declaration:הוא משמש להכרזה על משתנה שהסוג שלו זהה לסוגי האלמנטים שנאספו המיוצגים על ידי range_expression או הפניה לסוג זה.טווח_ביטוי:הוא מגדיר ביטוי המייצג את רצף האלמנטים המתאים.משפט לולאה:הוא מגדיר את הגוף של לולאת הטווח המבוססת על המכיל משפט אחד או יותר שיבוצעו שוב ושוב עד לסוף ביטוי הטווח.

הערה: אם איננו יודעים את סוג הנתונים של רכיבי המכולה, נוכל להשתמש במילת המפתח האוטומטית המזהה אוטומטית את סוג הנתונים של range_expression.

תוכנית להדפיס כל רכיב של המערך באמצעות טווח מבוסס לולאה

הבה נשקול דוגמה להדפסת המערך int והכפול באמצעות לולאה מבוססת טווח ב-C++.

program.cpp

חבילת כלי קפיץ
 #include using namespace std; int main () { int arr1 [5] = { 10, 20, 30, 40, 50}; double darr [5] = { 2.4, 4.5, 1.5, 3.5, 4.0 }; // use range based for loop for ( const auto &var : arr1 ) { cout << var << ' ' ; } // use auto keyword to automatically specify the data type of darr container. for ( const auto &var : darr ) { cout << var << ' ' ; } return 0; } 

תְפוּקָה

 10 20 30 40 50 2.4 4.5 1.5 3.5 4.0 

תוכנית להדגמת הווקטור בטווח המבוסס על לולאה

בואו נכתוב תוכנית פשוטה ליישום הווקטור בטווח המבוסס על לולאה.

Program2.cpp

 #include #include using namespace std; int main() { int x; // declare integer variable // declare vector variable vector vect = {5, 10 , 25, 20, 25}; // display vector elements for ( int x : vect) { cout << x << ' '; } return 0; } 

תְפוּקָה

להחליף תכנות ג'אווה
 5 10 25 20 25 

תוכנית להדפיס את המערכים באמצעות Range based for loop ב-C++ עם הפניה

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

Program3.cpp

 #include #include #include using namespace std; int main(){ array data = {1, 3, -2, 4, 6, 7, 9}; cout << ' Before updating the elements: ' << endl; for (int x : data){ cout << x << ' '; } // pass the references for (int &itemRef : data){ itemRef *= 3; } cout << endl << ' After modification of the elements: ' << endl; for (int x : data){ cout << x << ' '; } cout << endl; return 0; } 

תְפוּקָה

 Before updating the elements: 1 3 -2 4 6 7 9 After modification of the elements: 3 9 -6 12 18 21 27 

מקונן מבוסס טווח עבור לולאה

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

sql בחר מתוך טבלאות מרובות

תחביר:

 for ( int x : range_expression) // outer loop { for ( int y : range_expression) // inner loop { // statement to be executed } // statement to be executed } 

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

תוכנית להדפיס את הטווח המקונן המבוסס על לולאה ב-C++

שקול דוגמה להדגמת הטווח המקנן המבוסס על לולאה בשפת התכנות C++.

Range.cpp

 #include using namespace std; int main () { int arr1[4] = { 0, 1, 2, 3 }; int arr2[5] = { 1, 2, 3, 4, 5 }; // use nested range based for loop for ( int x : arr1 ) { // declare nested loop for ( int y : arr2 ) { cout << ' x = ' << x << ' and j = ' << y << endl; } } return 0; } 

תְפוּקָה

 x = 0 and j = 1 x = 0 and j = 2 x = 0 and j = 3 x = 0 and j = 4 x = 0 and j = 5 x = 1 and j = 1 x = 1 and j = 2 x = 1 and j = 3 x = 1 and j = 4 x = 1 and j = 5 x = 2 and j = 1 x = 2 and j = 2 x = 2 and j = 3 x = 2 and j = 4 x = 2 and j = 5 x = 3 and j = 1 x = 3 and j = 2 x = 3 and j = 3 x = 3 and j = 4 x = 3 and j = 5 

מה ההבדל בין לולאה מסורתית ללולאה מבוססת טווח?

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

תחביר:

 for ( variable_initialization; specify_condition; updated_counter) { // statement to be executed; } 

לולאה מבוססת טווח

מסגרת אוסף java

מצד שני, יש לנו לולאה חדשה מבוססת טווח זמינה בגרסת C++ 11 ואילך. יש לו שני פרמטרים, הצהרת טווח והביטוי range_. הוא משמש גם לביצוע שוב ושוב את גוש הקוד על פני טווח.

תחביר

 for ( range_declaration : range_ expression ) { loop _statement; // statement to be executed; } 

הצהרת range_ משמשת להכרזה על סוג המשתנה הקשור ל-range_expression (מיכל). ה-range_expression: זה בדיוק כמו מיכל שמכיל את אותם סוגי אלמנטים בצורה רציפה. ה-loop_statement מגדיר את ההצהרה שמתבצעת בתוך לולאה.

היתרונות של לולאה מבוססת טווח

  1. זה קל לשימוש, וגם התחביר שלו פשוט.
  2. לולאה המבוססת על טווח אינה דורשת חישוב של מספר האלמנטים בקונטיינרים
  3. הוא מזהה את רכיבי ההתחלה והסיום של המיכלים.
  4. אנו יכולים לשנות בקלות את הגודל והאלמנטים של המיכל.
  5. זה לא יוצר שום עותק של האלמנטים.
  6. זה הרבה יותר מהיר מהלולאה המסורתית.
  7. בדרך כלל הוא משתמש במילת המפתח האוטומטית כדי לזהות את סוג הנתונים של רכיבי המאגר.

חסרון של לולאה מבוסס טווח

  1. זה לא יכול לעבור חלק מרשימה.
  2. לא ניתן להשתמש בו כדי לעבור בסדר הפוך
  3. לא ניתן להשתמש בו במצביעים.
  4. זה לא מציע לאינדקס של האלמנטים הנוכחיים.