enum TYPE{
T_ONE,
T_TWO,
T_END
};
vector<TYPE> m_vecType;
이렇게 선언하고
백터에 요소를 push_back하면
벡터 0번부터 들어가잖아요
이걸 첨자연산으로 바로 가져올 때
m_vecType[T_ONE] 이런식으로 값에 바로 접근이 가능한데
enum TYPE{
T_ONE = 101,
T_TWO,
T_END
};
이렇게 T_ONE값이 101부터 시작한다면
벡터 안의 요소를 TYPE형의 값으로 가져올 수가 없게되는데
이걸 어떻게 해결하는게 좋을까요?
enum TYPE{ T_BASE = 101, T_ONE = 101, T_TWO, T_END }; enum에 BASE를 추가해서 m_vecType[T_ONE - T_BASE]를 바로 하던가 #define INDEX(type) type - T_BASE m_vecType[INDEX(T_ONE)] 처럼 할 수 있겠네
바로는 안되는거네요... 이 방법은 코드가 지저분해지는거 같아서 좀 고민됩니다
Unordered map이나 map을 사용함
진짜 맵 밖에 없을까요 ㅠㅠ
왜 이렇게 해야 하는지는 몰루겠지만 나라면 맵을 쓱나 enum을 거기에 맞는 int 값으로 바꿔주는 함수를 만들어서 쓸듯 - dc App
의도에 따라 다름
의미론적으로는 맵이 맞지 않냐 키로 밸류를 가져오겠다는건데
vector이랑 enum은 상성이 안 맞는데 - dc App