CS/C++

접두어 방식과 접미어 방식의 차이

Mirab 2023. 3. 5. 17:07
어떤게 더 좋을까?
// 접미어
for (int i = 0; i < n; i++)
{
	...
}

// 접두어
for (int i = 0; i < n; ++i)
{
	...
}

 

접미어 방식이나 접두어 방식 모두 논리적으로는 아래 블록으로 들어오게 되면 i 자체는 논리적으로 모두 +1씩 증가하게 됩니다.

 

접미어 방식과 접두어 방식의 선택이 프로그램의 행동에 영향을 주지 않더라도, 이런 선택이 때때로는 실행 속도에 작게 나마 영향을 준다고 합니다.

 

접미어 방식은

1. 값의 복사본을 만든다.

2. 복사본의 값을 증가시킨다.

3. 복사본을 리턴한다.

 

접두어 방식은

1. 값을 증가시킨다.

2. 그 값을 리턴한다.

 

복사본을 만든다는 과정의 차이가 생깁니다.

복사본이라는 것은 작은 프리미티브 타입이라면 괜찮으나, 사용자 정의형 데이터(구조체나 클래스) 등의 복사 비용은 생각보다 만만하지 않습니다.

 

결론으로는 프리미티브 타입은 어느 방식을 사용해도 거의 차이가 없지만,

사용자 정의형 데이터라면 접두어 방식이 조금 더 효율적입니다.

 

현업에서도 C++ 구조로 짜시는 분들은 접두어 방식을 많이 사용하고,

C# 구조로 짜시는 분들은 접미어 방식을 많이 사용하는 것 같습니다. 물론 C# 은 foreach 방식도 있으니..

 

이왕이면 접두어 방식을 사용합시다!