
הטקסט המלא של הדקות הראשונות בהרצאה «מערך של מבנים - Array» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
טוב, אנחנו רוצים לכתוב תוכנית, נפתח visual studio, file new project, win32, console application, זה יהיה track A, sample 01, גיבו אוקיי, וזה יהיה application settings, console application,
בסדר, בסדר ואוקיי אז מה אני רוצה אני רוצה שיהיה לי מערך של סטרקטים כל פעם שכל פעם מה כל פעם שאנחנו מזינים אומרים לו אינדקס לפי אינדקס לא לפי אינדקס לפי שלפי סוג של האש טייבל בקיצור ההזנה צריכה אני צריך איזשהו מבנה נתונים נקרא לזה האש טייבל אז אני בעצם צריך בסופו של דבר מסוג האש טייבל
להגדיר את ht, אני לא רוצה אותו דינמי, אני רוצה אותו דינמי או לא? דינמי או לא? דינמי או לא? שנייה אחת, בוא נחשוב. אני רוצה אותו דינמי, אני רוצה לכתוב שווה ל-new השטייב.
למה אני רוצה את זה? כי כרגע אני צריך רק אחד, אבל מחר אני ארצה שניים, אני רוצה להיות מסוגל להקצות אותו. אבל האמת היא שאם אני אומר ב-c, ב-c פלוס פלוס זה לא חייב לעשות, אני יכול להגיד לו פשוט ככה וזהו ויש לי האשטייבל אם אני מגדיר אותו אגדיר אותו כקלאס האשטייבל עמדה פסיק צריך ככה זה ב c++ יפה בואו נקמפל ctrl shift b
זה אמור לעבור בשלום יפה אז יש לי כבר האשטייבל עכשיו מה אני רוצה לעשות עם האשטייבל הזה אני רוצה לבוא ולהגיד לו האשטייבל תוסף לפי ה-Key הזה את ה-Value הזה.
טוב, אז אנחנו אומרים לו, תוסיף לי Key ו-Value. אוקיי, אז בהשתהב על מה שאנחנו נעשה, אנחנו נגדיר פרייבט באזור של הפרייבט. מה אנחנו נגדיר?
אנחנו נגדיר, שנייה, אולי נתחיל מהפאבליק, אנחנו רואים שאנחנו צריכים את Add. בואו נראה אם אפשר להגיד לו צ'ופצ'יק, אין לו צ'ופצ'יק.
אפשר להגיד לו תיצור, את יוניטייט, את גאות תעופה, בקיצור אין לו, צריך לזכור את זה ידנית, אז נגדיר באזור של הפאבליק, נגדיר את void add שמקבלת נגיד int k והvalue גם כן יהיה int value ונממש אותה כאן.
מה יהיה המימוש שלה? אנחנו עוד לא יודעים, הוא רק מתקמפל, נראה שזה מתקמפל, לא מתקמפל, כי אין לי k ואין לי value, יפה, אז בואו נכתוב פה עבור נגיד 15 תאחסן לי את 458 ובילד בילד טקסטילית יפה מאוד אז זה הבילד הצליח מה אנחנו רוצים עכשיו לעשות אנחנו רוצים ממש לאחסן ממש לאחסן אז בואו נעשה
F11 ניכנס פנימה אפילו נשים את זה ככה אני נכנס לעד ובתוך עד מה אני רוצה אני רוצה ממש לאחסן אני צריך מערך אז נגדיר מערך של, אוקיי, אז מערך של מה? זה צריך להיות מערך של k-value, k-value.
לכן אני צריך מבנה פנימי, שמבחינתי יכול להיות סטראקט, לא, נעשה גם אותו קלאסט. זה יהיה קלאסט, זה נקרא entry, אתה שואל למה קלאסט ולמה סטראקט?
למה לא סטראקט? אין הבדל ב-c פלוס סטראקט בין קלאסט לסטראקט, מבחינת ההתנהגות שלהם חוץ מאשר שסטראקט ביידי פרוטוקול פאבליק וקלאס ביידי פרוטוקול פרייבט זה ההבדל זה חסר משמעות אז זה הקלאס שלנו יפה אז מה אנחנו רוצים בקלאס שלנו קלאס אנטרי מה יהיה שם אז
יהיה שדה אחד שהוא יהיה פרייבט אינק קי ואינק ואליו שניהם פרייבט והשאלה היא באמת אם יהיו פרייבט בואו נעשה אותם בעצם פאבליק. כי ועדים, בואו נעשה אותם פאבליק, אז נעשה את זה סטראקט.
אוקיי, אז זה סטראקט, ואומר שזה סטראקט, אז זה, זה, זה, זה בסדר. קי בוואליו, יפה מאוד. אז מה? אז יש לי סטראקט, הסטראקט עצמו לא מוכר מחוץ לקלאס האש טייבל, ואני אוסיף פה, אתה יודע, פרייבט מסוג אנטרי, אני אגדיר את entries, זה יהיה מערך בגודל של 1000, קבוע, אנחנו לא נאפשר הקצה מחדש.
הגודל יהיה קבוע, יפה. בואו נעשה, אוקיי, אז עכשיו אנחנו בעד, אז בעד אני רוצה, בואו נעשה build כרגע, נגיד לו yes, אוקיי, מה הבעיה?
אז הוא אומר לי, syntax term missing, נקודה פסיק, before I identify entries, עוד פעם, מיסינג נקודה פסיק בפור אידנטיפייר אנטריז מיסינג נקודה פסיק בפור אידנטיפייר אנטריז אה, הוא לא מכיר את אנטרי.
ב-c++ חייבים לשים קודם את ההצהרה ורק אחרי זה, בצור לא, הוא לא יודע מה זה, אז אני יכול לשים הצהרה לפני, את זה אני אקח פשוט ואני אשים את זה כאן, אני אשים את זה כאן ככה, ושוב נקמפל, ובילד סקסידד, יפה מאוד, בואו נסגור את זה, זה לא מעניין, בואו נקטין את זה, יפה, אוקיי, אז מה היה לנו, אז עדיין לא עשינו אד, יפה, אז אני צריך אינדקס, אחד
מהדברים שאני צריך כאן זה אינדקס והוא באופן דיפלוטיבי מותחל, מותחל אני חושב לאפס, לא, הוא לא מותחל לאפס, הוא לא מותחל לאפס, צריך להתחיל אותו לאפס.
אז אולי נעשה קונסטרקטור. אם נעשה קונסטרקטור, נעשה default קונסטרקטור. קונסטרקטור, נדרוס את ה-default קונסטרקטור. זאת אומרת, אני לוקח את זה לכאן ואני אומר לו קופי ו-hash table.
default קונסטרקטור זה קונסטרקטור ללא פרמטרים. אני דורס את ה-default קונסטרקטור, והאמת שאני יכול לשים פה נקודתיים ואינדקס חל לאפס.
מישהו פעם אמר שקונסטרקטור טוב זה קונסטרקטור בלי גוף. אמר את זה טראוסטרופט בספר שלו, כשהוא ברא את ציפלסלאק.
הוא אמר: אינדיקציה לתכנות נכון זה קונסטרקטור ריק. אז הנה, תכנות נכון. יפה.
ואם לא נעשה את זה, אז אינדקס לא יתאפס. למה לא? כי הוא לא משתנה גלו... הוא לא משתנה סטטי, הוא לא משתנה, הוא לא נמצא פה בחוץ. הוא לא פה בחוץ, הוא לא שם בחוץ.
אני יכול תיאורטית להגיד את הדבר הזה שווה לאפס וזה גורם לכל המבנה הנתונים להתאפס. אבל אם מישהו לא יעשה את זה אני רוצה לוודא שהאינקס הוא מאופס.