Menu
Coddy logo textTech

מערך דינמי

שיעור 13 מתוך 14 בקורס מצביעים ב-C++ של Coddy.

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

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

אבל מאחורי הקלעים, ה-vector משתנה באופן דינמי, וכל השיטות והפונקציות נבנו מראש על ידי מישהו אחר. עם זאת, טוב לדעת כיצד הקצאה דינמית של מערך פועלת.

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

// הקצאת זיכרון עבור 5 מספרים שלמים:
int *array = new int[5];
    
// מילוי המערך:
for(int i = 0; i < 5; i++)
        array[i] = i + 1;
// הדפסה
for(int i = 0; i < 5; i++)
    cout << array[i] << " ";
    
// שחרור הזיכרון
delete[] array;
Output:
1 2 3 4 5

כפי שאפשר לראות, שריינו באופן דינמי מקום בזיכרון עבור 5 מספרים שלמים, השתמשנו בלולאת for כדי למלא את המקומות האלה בזיכרון, הדפסנו אותם ואז מחקנו את המערך באמצעות delete[] כדי לשחרר את הזיכרון בבטחה ולמנוע דליפות זיכרון.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

challenge icon

אתגר

קל

בקלט יינתן לך מספר N שמייצג את מספר האיברים במערך. צור באופן דינמי מערך בשם numbers באמצעות מצביע והקצה מקום עבור N מספרים שלמים. בשורת הקלט הבאה יינתנו לך N איברים, קרא כל אחד מהם באמצעות לולאת for, ולבסוף הדפס את כל האיברים במיקומים זוגיים (האינדקס מתחיל ב־0). לבסוף, שחרר את הזיכרון שהקצית בתחילת התוכנית

קלט
5
1 2 3 4 5

פלט
1 3 5

נסו בעצמכם

#include <iostream>

using namespace std;

int main() {
    // כתבו כאן קוד
    return 0;
};

כל השיעורים ביחידה מצביעים ב-C++

תרגלו בעצמכם: קומפיילר C++ אונליין