열거형(Enumeration)은 C/C++ 언어에서 사용자가 직접 정의할 수 있는 데이터 타입입니다. 정수 상수들에 의미 있는 이름을 부여함으로써 프로그램의 가독성과 유지보수성을 크게 향상시킬 수 있습니다. 열거형은 "enum" 키워드를 사용하여 선언합니다.
열거형의 기본 문법
열거형을 선언하는 기본 문법은 다음과 같습니다.
enum enum_name{const1, const2, ....... };
enum_name: 사용자가 임의로 지정하는 열거형의 이름입니다.
const1, const2: 열거형 멤버에 해당하는 상수 값들입니다.
enum 키워드는 열거형 타입의 변수를 정의할 때도 사용됩니다. 열거형 변수를 정의하는 방식은 크게 두 가지가 있으며, 아래 예시처럼 작성할 수 있습니다.
enum colors{red, black};
enum suit{heart, diamond=8, spade=3, club};
특별히 값을 지정하지 않으면 첫 번째 멤버는 0부터 시작해 순서대로 1씩 증가한 값이 자동으로 부여됩니다. 중간에 특정 값을 지정하면 그 이후 멤버들은 해당 값부터 다시 1씩 증가합니다.
예제
#include <iostream>
using namespace std;
enum colors{red=5, black};
enum suit{heart, diamond=8, spade=3, club};
int main() {
cout <<"The value of enum color : "<<red<<","<<black;
cout <<"\nThe default value of enum suit : "<< heart << "," << diamond << "," << spade << "," << club;
return 0;
}
실행 결과
The value of enum color : 5,6 The default value of enum suit : 0,8,3,4
colors 열거형에서 red에 5를 지정했기 때문에 black에는 자동으로 6이 할당되었습니다. 반면 suit 열거형에서 heart는 값을 지정하지 않아 0이 되었고, diamond에 8을 지정한 후 spade는 3으로 재지정되었으며, club은 그다음 값인 4가 되었습니다. 이처럼 열거형 멤버의 값은 개발자가 원하는 대로 유연하게 제어할 수 있습니다.
열거형 순회하기
열거형의 모든 멤버를 하나씩 처리하는 것도 어렵지 않습니다. for 루프를 생성하여 첫 번째 멤버부터 마지막 멤버까지 반복하면 되는데, 실제 코드를 통해 살펴보겠습니다.
예제
#include <iostream>
using namespace std;
enum suit{heart, diamond, spade, club};
int main() {
for(int i = heart; i<=club; i++) {
cout << "Card Type : " << i << endl;
}
}
실행 결과
Card Type : 0 Card Type : 1 Card Type : 2 Card Type : 3
열거형 멤버는 내부적으로 정수 값으로 관리되기 때문에 위 코드처럼 일반 정수 변수와 동일하게 for 루프에서 활용할 수 있습니다. 다만 이 방식은 멤버 값이 연속적으로 1씩 증가하는 경우에만 올바르게 동작한다는 점에 유의해야 합니다. 만약 중간에 임의의 값이 지정되어 있다면 범위 기반 반복이나 별도의 배열 매핑 등의 방법을 고려하는 것이 좋습니다.