השערה
ב containerים כמו vector ו list אתה יכול לעשות reserve כי ה key שלך הוא משהו שה reserve יכול לקבוע, כלומר אתה תעשה reserve של 1000, אין בעיה להקצות 1000 איברים ואח"כ לגשת אליהם לפי האינדקס (key בעצם) שלהם. ב map אתה הרי מגדיר מה הkey שלך, ויש לו השפעה מאד גדולה עם המיקום של כל אובייקט אצלך ב map. אני חותר לזה שאם תחשוב על reserve ל map מאד מהר תראה שאתה צריך לתת מפתח לכל ערך שאתה מכניס, כאן אתה נתקל באחת משני בעיות : א. אתה סתם מייצר מפתחות (נגיד 1 עד 1000) אבל אז המפה שלך ממויינת לפי המפתחות האלה, וברגע שתשנה את ה key זה יגרור אחריו שינוי עצום של כל מבנה האובייקטים ב map שלך, הרי באחורי ה map יושב עץ שחור אדום - תחשוב איזה שינויים יהיו ב map שלך אם תשנה את ה key של מה שהיה 1 לנגיד 1001 (שהוא ה key האמיתי שלך), יהיו לך
המון שינוים שיצטרכו להתבצע כדי שהעץ יהיה מסודר שוב נכון. ב. אתה יכול להכניס את המפתחות האמיתיים, אבל אם יש לך אותם מה בעצם עשית כאן ? בקיצור אם אתה מחפש דרך לייעל את זה ולדאוג שלא יהיה חסר זיכרון, תעשה לך איזה list או vector של אובייקטים מהסוג שיכנסו לmap - אותם תקצה בתחילת התוכנית. ואז בכל הכנסה, תקח אובייקט (אחד שלא השתמשת בו עדיין) מה list שלך תתן לו את הנתונים האמיתיים, ותכניס אותו לmap (שיכיל מצביעים לאובייקטים שלך). ככה גם תקצה הכל מראש, גם ה map יעבוד על פוינטרים וההקצאות יהיו קלות. אני מקווה שהבהרתי את עצמי, אני אמנם לא סגור במאה אחוז שכל מה שאמרתי נכון אבל בכל זמן כתיבת ההודעה לא מצאתי פגם בתאוריה שלי
