오늘도 이어지는 C++ 공부
swtich case와 if문은 모두 조건 분기 구문이다.(이런건 다 알죠?)
차이점
1. C++에서의 switch case문은 조건값으로 상수만 받을 수 있다.
2. swtich case문은 내부적으로 Mapping 가능한 점핑 테이블을 만든다. 그리고 이 값이 선형적으로 순차적일때 메모리를 적게 차지한다. 다수의 조건 분기가 있을때 코드가 깔끔해보이는 장점 이외에 swtich case문은 상수값들이 정렬되어 인덱싱 되어 있으므로 많이 나올수록 if보다 속도에 우위를 갖고 있다. 단 C++에서 if문을 연속적으로 썼을때 경우에 따라서 컴파일러가 이 부분을 테이블로 만들어 인덱싱 시켜주는 경우도 있으나 기본적으로 switch case의 속도가 더 빠르다고 생각하면 되겠음.
구문 예시)
const int hundred = 100; // const는 해당 변수를 상수로 선언한다.
int b;
cin >> b;
switch(b)
{
case 1 : case 2 :
cout << "1이거나 2 이거나";
break;
case hundred :
cout << "100";
break;
case default :
break;
}
swtich case와 if문은 모두 조건 분기 구문이다.(이런건 다 알죠?)
차이점
1. C++에서의 switch case문은 조건값으로 상수만 받을 수 있다.
2. swtich case문은 내부적으로 Mapping 가능한 점핑 테이블을 만든다. 그리고 이 값이 선형적으로 순차적일때 메모리를 적게 차지한다. 다수의 조건 분기가 있을때 코드가 깔끔해보이는 장점 이외에 swtich case문은 상수값들이 정렬되어 인덱싱 되어 있으므로 많이 나올수록 if보다 속도에 우위를 갖고 있다. 단 C++에서 if문을 연속적으로 썼을때 경우에 따라서 컴파일러가 이 부분을 테이블로 만들어 인덱싱 시켜주는 경우도 있으나 기본적으로 switch case의 속도가 더 빠르다고 생각하면 되겠음.
구문 예시)
const int hundred = 100; // const는 해당 변수를 상수로 선언한다.
int b;
cin >> b;
switch(b)
{
case 1 : case 2 :
cout << "1이거나 2 이거나";
break;
case hundred :
cout << "100";
break;
case default :
break;
}




최근 덧글