У меня есть код С++, в котором объявлено следующее перечисление:
enum Some
{
Some_Alpha = 0,
Some_Beta,
Some_Gamma,
Some_Total
};
int array[Some_Total];
Значения Alpha, Beta и Gamma являются последовательными, и я с удовольствием использую следующий цикл для итерации через них:
for ( int someNo = (int)Some_Alpha; someNo < (int)Some_Total; ++someNo ) {}
Этот цикл в порядке, пока я не решит изменить порядок объявлений в перечислении, скажем, сделать Beta первым значением, а Alpha - вторым. Это делает недействительным заголовок цикла, потому что теперь мне нужно перебирать с Beta на Total. Итак, каковы наилучшие методы повторения через enum? Я хочу перебирать все значения без изменения заголовков циклов каждый раз. Я могу думать о одном решении:
enum Some
{
Some_Start = -1,
Some_Alpha,
...
Some_Total
};
int array[Some_Total];
и итерации от (Start + 1) до Total, но это кажется уродливым, и я никогда не видел, чтобы кто-то делал это в коде. Есть ли известная парадигма для повторения через перечисление, или мне просто нужно исправить порядок значений перечисления? (пусть притворяется, у меня действительно есть некоторые удивительные причины для изменения порядка значений enum)...