היית אומר
שדרך נוחה היא ליישם את זה באמצעות map (אם אתה עובד ב-++C). זו בעצם דרך יותר אלגנטית (ויעילה) לנהל מיפוי בין מספר למחרוזת, מאשר רשימה מקושרת. קרא על map ב-MSDN. באופל כללי, map הוא סוג של מילון. יש מפתח (במקרה שלך זהו מספר היום) וערך (המחרוזת המתאימה). למי שלא מכיר כ"כ את המחלקה הזו, אני מציע לעבוד אולי עם CMap של MFC. זה יותק פשוט ואולי חשוב יותר: זה מתועד באופן ברור יותר. בכל מקרה, אתה מאתחל את ה-Map בתחילת התוכנית, ואח"כ, הפונקציה שלך רק צריכה לבקש מה-map את המחרוזת המתאימה. משהו כזה:
enum day {sun,mon,tue}; typedef enum day day; typedef std::map<day,char*> MyMapType; static MyMapType MyMap; // helper for the Init() function: #define INITDAY(dayname) MyMap[dayname]=##dayname void Init() { INITDAY(sun); INITDAY(mon); INITDAY(tue); }; const char* GetDayName(day d) { MyMapType::const_iterator it = MyMap.find(d); // if not found: if (it == MyMap.end()) return NULL; return it->second; }
כמו שאמרתי, במקום std::map אפשר לעבוד עם CMap והקוד יראה כמעט אותו הדבר...