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

조회수 1728회

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

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 하는 방법밖에 없습니다

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.