enum을 이터레이션 할 수 있나요?


enum에서는 ++나 +=를 쓸 수 없는 걸로 알고 있는데 그럼 C++ enum을 처음부터 끝까지 이터레이션 하려면 어떻게 해야 되나요?

  • 2016년 01월 24일에 작성됨

조회수 209


1 답변


좋아요
0
싫어요
채택취소하기

보통 이터레이트 할 때는

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하고 싶다면, vectorenum의 값을 넣어서 iterate 하는 방법밖에 없습니다

  • 2016년 01월 24일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close