לדלג לתוכן

2.4 - מכולות כבחירה הנדסית - תרגול

תרגול - שמירת זהות של משימה

בנו מאגר משימות שמשתמש ב־vector ושומר pointer לאיבר הראשון. כתבו ניתוח שמראה איזו פעולה עלולה לפסול אותו; אין לקרוא דרך הpointer אחרי הפסילה.

כתבו גרסה שנייה עם vector<unique_ptr>, והדגימו גדילה של המכולה בלי שינוי הכתובת של Job קיים. הסבירו מה עדיין פוסל את הpointer ואילו עלויות נוספו.

גודל וקיבולת

כתבו קוד שמבצע reserve על vector ריק, מדפיס size ו־capacity ואז מוסיף איברים באמצעות push_back. הסבירו מדוע reserve אינו מרשה גישה באינדקס לאיברים שטרם נוצרו.

החלטת תכנון

בחרו בין vector, deque, map ו־unordered_map לשני תרחישים: סריקה מלאה תכופה של רשומות קטנות, וחיפוש לפי מפתח עם דרישה לסדר ממויין. נמקו באמצעות חוזים ועלויות, לא רק באמצעות תוצאה של הרצה קצרה.

הוסיפו טבלה של שלוש פעולות במכולה שבחרתם, והבחינו בין פסילת iterator, reference ו־pointer.