enum을 이터레이션 할 수 있나요?
조회수 6957회
1 답변
-
보통 이터레이트 할 때는
enum Foo { One, Two, Three, Last }; for ( int fooInt = One; fooInt != Last; fooInt++ ) { Foo foo = static_cast<Foo>(fooInt); // ... }
같은 방법을 씁니다. 하지만 이 방법은 진짜로 iterate하는 것도 아니고,
Two = 9
같이 값을 따로 정하면 쓸 수 없습니다.그래서
enum
을 다룰 때는 보통 iterate가 아니라 다음과 같이 switch문을 주로 쓰고,switch ( foo ) { case One: // .. break; case Two: // 의도적으로 fall case Three: // .. break; case Four: // .. break; default: assert( ! "Invalid Foo enum value" ); break; }
정말로
enum
을 iterate하고 싶다면,vector
에enum
의 값을 넣어서 iterate 하는 방법밖에 없습니다
댓글 입력