הרעיון עצמו מאוד פשוט:
map "ממפה" לך, בין ערכים מסוג אחד, ערכים מסוג שני. למשל: נניח שאתה רוצה לתרגם מספר לתרגום המילולי שלו. אתה תרצה איזה שהוא מבנה נתונים שיודע לעשות לך את הקישור:
1 - "six" 2 - "twelve" 3 - "seven" 4 - "ten" וכך הלאה...
אפשר להסתכל על map כעל טבלה גדולה כזאת, כשערך האינדקס הוא הערך השמאלי. אז אם למשל אתה רוצה להדפיס במילים את המספר 2, היית ניגש לmap, מחפש איזה ערך מתאים ל2, ומוצא "twelve". כחלק מהאופן עבודה הזה, הmap מתנהג כמו פונקציה - יכולים להיות כמה ערכים שמאליים עם אותו ערך ימני, אבל הmap לא יכול יותר מרשומה אחת עבור כל ערך מצד שמאל. כלומר - אין בעיה שגם 2 וגם 13 יקושרו ל"twelve", אבל לא יכול להיות מצב שבו 2 יקושר גם ל"twelve" וגם ל"minus four". לגבי המימוש שלו - זה משתנה מכל קומפיילר לקומפיילר. חלק מהקומפיילרים יהיו נחמדים מספיק כדי להביא לך את הקוד שלהם, אחרים אולי לעולם לא יאמרו. מה שכן, המימוש קצת פחות צריך לשנות לך - מכמה סיבות: 1. STL עוצב בצורה כזאת שכל אחד יכול לממש איך שבא לו, כשהתפקוד הוא אותו התפקוד, וזה שקוף למתכנת. 2. אם תניח כל מיני הנחות על אופן המימוש, יש מצב שתרצה לקמפל על מערכת נפרדת, ואז המימוש יהיה שונה, מה שישים אותך בבעיה די גדולה.