Отличается от 5 других ответов, которые все одинаковы.Есть фиксированное количество месяцев.Было бы ненужно хранить их в виде строки.enum
может помочь вам обратиться к ним по имени.Это было бы намного более эффективно, но не до оптимизации, потому что это также имеет больше смысла.Опечатка типа "feburary" в строковой версии добавит новый месяц!Если бы это было enum
, вы бы получили ошибку компиляции, плюс если ваш редактор использует автозаполнение, вам не придется искать, как пишется februrary.
enum { JANUARY=0, FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER};
months[FEBRUARY] = v;
Вы можете поместить его в пространство имен, если не хотите загрязнять глобальное.И было бы легче сделать их строчными на этом этапе.
namespace Month {
enum { January=0, February,March,April,May,June,July,August,September,October,November,December};
}
months[Month::February] = v; // equivalent to months[1]=v if you prefer number
Вы также можете начать enum
с 1, если хотите, чтобы январь был 1 вместо февраля.Это может иметь больше смысла для вас.Я думаю, что широкая публика должна относиться к январю как 0, но, возможно, это только я.0 можно изменить на NULL_MONTH или INVALID_MONTH, или на то, что подходит вашему дизайну.