שיעורי מודול (1/2)
מערכים ווקטורים
ב-C++, ניהול אוספי נתונים מתבצע בעיקר באמצעות שני כלים: מערכים בסגנון ישן (מערכים בסגנון C) ו-וקטורים (std::vector). הבנת ההבדל בין זיכרון סטטי ודינאמי היא בסיסית לכתיבת קוד יעיל.
1. מערכים סטטיים (מערכים בסגנון C)
מערך הוא אוסף של אלמנטים מאותו סוג המאוחסנים במיקומי זיכרון רציפים. גודלו של מערך סטטי חייב להיות ידוע בזמן ההידור ולא ניתן לשנות אותו מאוחר יותר:
int grades[5] = {18, 22, 25, 28, 30}; // Array of 5 integersמאפיינים מרכזיים:
- גודל קבוע: לא ניתן להוסיף או להסיר אלמנטים בזמן ריצה.
- הקצאת מחסנית: מהיר מאוד להקצאה ולפיזור.
- גישה: נעשה באמצעות אופרטור האינדקס
[](לדוגמה,grades[0]עבור האלמנט הראשון).
2. וקטורים דינמיים (std::vector)
ספריית התבניות הסטנדרטית של C++ (STL) מספקת את המחלקה std::vector, המייצגת מערך דינמי. כדי להשתמש בו, עליך לכלול את הכותרת <vector>:
#include <vector>
std::vector<int> numbers; // Creates an empty vector of integersפעולות נפוצות:
- הוסף לסוף: שיטת
.push_back(value)מכניסה אלמנט בקצה הווקטור, ומקצה מחדש את הזיכרון באופן אוטומטי במידת הצורך. - גודל: שיטת
.size()מחזירה את מספר האלמנטים הנוכחיים בווקטור. - גישה בטוחה: בנוסף לאופרטור
[], אתה יכול להשתמש בשיטת.at(index)(לדוגמה,numbers.at(0)), אשר זורקת חריגה אם האינדקס הוא מחוץ לתחום.
std::vector<int> scores = {90, 85};
scores.push_back(95); // scores now contains {90, 85, 95}
std::cout << scores.size(); // Prints 3נסה זאת בעצמך
הכריז על סטד::וקטור של מספרים שלמים בשם מספרים. הוסף את הערכים 10, 20 ו-30 בתוכו באמצעות שיטת .push_back() ולאחר מכן הדפס את גודלו באמצעות numbers.size().
הצג רמז
הכריז על הווקטור עם `std::vector<int> numbers;`, הכנס את שלושת המספרים עם `.push_back(value)`והדפיס אותו עם`std::cout << numbers.size();`.
הפתרון זמין לאחר 3 ניסיונות
ב-main, מוגדר מערך ציונים של 5 אלמנטים. כתוב לולאת for כדי לחשב את הסכום של כל האלמנטים במערך, אחסן אותו בסכום המשתנה והדפיס אותו באמצעות std::cout.
הצג רמז
השתמש בלולאה `for (int i = 0; i < 5; ++i)`וסכם כל רכיב בתוך הלולאה עם`sum += ציונים[i];`.
הפתרון זמין לאחר 3 ניסיונות
מהי השיטה הנכונה לצרף אלמנט לסוף std::vector ב-C++?
std::vector<int> numbers; // come aggiungere il valore 50?