Jaka jest preferowana metoda prosta do iteracji poprzez wyliczenie z sąsiadującymi wartościami w C++? Znalazłem poprzednie pytania na ten temat dotyczące SO, które dotyczyły tworzenia niestandardowych operator++
itp., Ale wydaje się to przesadą. Do tej pory najlepszym Mam wymyślić to:Najprostsza metoda do iteracji poprzez ciągłe wartości wyliczeniowe w C++
enum {
FOO,
BAR,
BLECH,
NUM_ENUMS
} MyEnum;
//for (MyEnum m = FOO; m < NUM_ENUMS; ++m) // compile error
// ...
//for (MyEnum m = FOO; m < NUM_ENUMS; m = m + 1) // compile error
// ...
for (MyEnum m = FOO; m < NUM_ENUMS; m = MyEnum(m + 1)) // OK ?
...
Czy to rozsądne z punktu widzenia stylu kodowania i jest prawdopodobne, aby generować ostrzeżenia (g++ -Wall ...
wydaje się zadowolony z tego)?
Może to kwestia strona dlaczego chcesz iterować po enumie, a jeśli naprawdę, czy istnieje lepszy sposób na przedstawienie nazwanych wartości do iteracji? Co powiesz na używanie kontenera std :: map – woosah
Jest to dobre, o ile nie definiujesz niestandardowych wartości dla elementów, pozostawiając spacje między nimi (np .: FOO = 1, BAR = 5, BLECH = 7) – dunadar
Twoja trzecia próba powinna być ok (patrz [ta odpowiedź] (http://stackoverflow.com/a/261986/237483)) –