C++

[C++] enum

햇썽이 2025. 5. 27. 00:18

enum을 이용한 색상 상수 정의

enum을 사용하면 각 항목에 정수 값을 명시적으로 지정할 수 있다. 명시하지 않으면 0부터 자동으로 증가한다.

위 예시에서 Red는 0, Green은 1, Blue는 2, Alpha는 3, SIZE는 4가 된다.

#include <iostream>

using namespace std;

enum Color
{
    Red = 0,
    Green,
    Blue,
    Alpha,
    SIZE
};

배열을 이용한 색상 데이터 저장

int colors[SIZE] = { 255, 128, 128 };

cout << "Red : " << colors[Red] << endl;
cout << "Green : " << colors[Green] << endl;
cout << "Blue : " << colors[Blue] << endl;

enum 값을 배열의 인덱스로 사용하면 가독성도 좋고 유지보수도 편리하다. SIZE는 배열의 크기로도 사용될 수 있다.

 

배열을 이용한 평균 계산

기본적으로 평균을 계산할땐 밑에 있는 코드처럼 그냥 더해서 값을 나누는 형태를 쓸수있다. 

이 코드는 간단하지만 나중에 유지보수할때 안좋을수 있는데 이유는 추가적으로 다른 요소들이 더해졌을때 하나씩 전부 바꿔줘야한다는 것이다.

struct ColorStruct
{
    int red;
    int green;
    int blue;
};

ColorStruct cs = { 255, 128, 64 };
int avg1 = (cs.red + cs.green + cs.blue) / 3;
cout << avg1 << endl;
int avg0 = (colors[Red] + colors[Green] + colors[Blue]) / 3;
cout << avg0 << endl;

 

 

조금 가독성이 떨어지긴하지만 유지보수를 위해서는 밑에와 같은 코드를 써도 좋다.

이렇게 되면 모든 값을 유연하게 대처할수 있다.

int total = 0;
for (int i = 0; i < SIZE; ++i)
{
    total += colors[i];
}
int avg0 = total / SIZE;
cout << avg0 << endl;