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

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

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

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.