[C++] range based for, 범위 기반 for 반복문

이번 포스팅은 C++을 공부하면서 range based for 즉, 범위 기반 for문에 대해 정리한 것입니다.
1. C++ 범위 기반 for문 이란?
- 기존의 for문은 반복할 때 편리한 방법으로 사용하지만 C++에서는 범위 기반 for문(range-based for)이라는 새로운 반복문을 사용하여 더 간단하게 배열 등의 형식을 반복하는 방법을 제공합니다.
- 사용법
for(타입 원소(변수) : 배열(리스트))
배열(리스트)에서 타입 형태의 원소(변수)를 차례대로 가져오는 형식입니다.
- 예시
#include <iostream>
int main()
{
int s[5] = {1, 2, 3, 4, 5};
for(int x : s)
std::cout << x << " ";
std::cout<<std::endl;
}
- 결과

결과를 보시면 배열 s안의 요소들을 하나씩 꺼내서 반복된 것을 알 수 있습니다.
즉, 배열 s 안의 int형 변수를 출력하는 결과를 볼 수 있으며
꼭 배열(리스트) 앞에 " : " (콜론)을 붙여줘야 합니다.
2. 범위 기반 for문과 참조(&)
- 앞서 사용한 방법으로 for문을 사용한다면 각 배열 요소가 배열 s에 복사돼서 사용됩니다.
이렇게 복사를 하여 반복하는 방법은 비용이 많이들 수 있습니다. 그렇기 때문에 참조를 사용하여 값이 복사되지 않게 하여 반복합니다.
- 예시
int main()
{
int arr[] = {1,2,3,4,5};
for(int &n : arr)
std::cout << n << " ";
}
- 결과

- 참조를 사용한다면 배열 arr안의 요소들의 값을 바꿀 수 있습니다.
int main()
{
int arr[] = {1,2,3,4,5};
for(int &n : arr)
n = 0;
for(int &n : arr)
std::cout << n << " ";
}
- 결과

이러한 값 변경을 하지 못하게 하기 위해 const 선언을 하여 값을 읽는 것만 가능하게 할 수 있습니다.'
int main()
{
int arr[] = {1,2,3,4,5};
for(const int &n : arr)
std::cout << n << " ";
}
3. 기존 for문과 범위 기반 for문의 차이점
- 기존의 for문을 횟수를 기준으로 반복을 하지만
범위 기반 for문의 반복 횟수는 배열 요소의 개수에 맞춰 자동으로 반복 횟수가 결정됩니다.
- 범위 기반 for문을 사용했을 때는 index를 구분하기가 힘듭니다. 기존의 for문은 i로 index를 나타내는데 범위 기반 for문은 원소(변수)의 값만 존재하기 때문입니다.
이상으로 C++의 범위 기반 for(range based) for문을 정리했습니다
질문이나 잘못된 점이 있다면 댓글로 남겨주세요!
다음 포스팅으로 찾아오겠습니다 :)