גהנום טמפלטס ...

גהנום טמפלטס ...

שכחתי איך מתכנתים :) תודה לצהל :) הגדרתי מפה של STL ואני צריך שהיא תחזיק שתי מחרוזות.. גם ה key וגם ה value אני לא רוצה להשתמש ב string של STL (בגלל שזאת תוכנית MFC.. לא תהיה בעיה עם ה CString?) בכל מקרה.. איך אני מגדיר את זה?... שום קומבינציה לא עוברת קימפול... בקוד המצודף ההגדרות של הmap וה pair זה עם string כי אין לי מושג איך מגדירים לטמפלט שתקבל מחזרוזת char נורמלי... מה שניסיתי לא עובד קימפול גם הקוד המצורף משתגע בגלל שילוב סוגי המשתנים כנראה... קיצר.. HELP :)
char key[128],value[128]; typedef pair <string, string> sPair; map<string,string> mymap; mymap.insert(sPair(key,value));​
 

zagzagzag

New member
מתקמפל ב-GCC...

ואין סיבה שלא יעבור קומפילציה, כי אחד ה-ctors של string אמור לקבל *char. אני גם לא חושב שאמורה להיות בעיה לשמור CString בתוך STL map. בכל מקרה, אין מניעה להגדיר משהו כזה -
typedef pair<char*, char*> sPair; map<char*, char*> mymap; char key[] = "key"; char value[] = "value"; mymap.insert(sPair(key, value));​
רק שים לב שההשוואה תתבצע בין מצביעים ולא בין מחרוזות, אז צריך לספק פונקציה שתעשה השוואה בין מחרוזות. אמורה להיות דוגמה באתר של sgi (חפש בגוגל sgi stl).
 

vinney

Well-known member
אם אתה עובד בMFC, מה רע בCMap?

זה עדיף לדעתי, אם אתה רוצה שזה יהיה מתאים אחד לשני. עקרונית לא אמורה להיות בעיה, מה שגיאת הקומפילציה? ולמה אתה מגדיר pair בנפרד? מה רע בmap::pair?
 
למעלה