C++을 배우거나 사용하다가 다른 사람이 작성한 코드를 보다 보면 내가 쓰는 일반적인 for문이랑 다르게 더 간결하고 편리한 for문을 사용하는 것을 볼 수 있다
그래서 이번 글에선 이러한 편리한 for문을 사용하는 법에 대해 알아보려고 한다
범위 기반 for문
C++에서 남들이 사용했던 더 간결하고 편리해보이던 이러한 for문의 정확한 명칭은 범위 기반 for문(range-based for loop)이라고 하며 C++11부터 도입되었다
그렇다면 왜 범위 기반 for문은 범위 기반 for문이라는 명칭이 붙었을까?
이는 범위 기반 for문이 컨테이너나 배열과 같은 “범위”에 속한 모든 요소를 순회하는 특성을 가졌기 때문인데 일반적인 for문에서는 반복자나 인덱스를 사용하여 컨테이너의 특정 범위를 지정하지만 범위 기반 for문에서는 이러한 인덱스나 반복자를 직접 다룰 필요 없이 자동으로 전체 범위를 순회한다
기본 문법
앞에선 범위 기반 for문에 대해 알아봤으니 이제 이러한 범위 기반 for문을 어떻게 사용해야 하는지 기본 문법에 대해 살펴보자
1
2
3
for(type name : container) {
// 코드
}
우선 범위 기반 for문은 다음과 같은 형태를 가졌고 코드에 작성된 것처럼 for문 안에 값에 타입과 임시 이름을 넣고 : 뒤에 for문을 사용할 컨테이너를 넣어준다
1
2
3
for(auto num : numbers) {
cout << num << " ";
}
이런 식으로 말이다
예제 코드
마지막으로 범위 기반 for문을 어떨 때 사용할 수 있는지 예제 코드와 함께 살펴보고 마치겠다
벡터 순회하기
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
for(auto num : numbers) {
std::cout << num << " ";
}
return 0;
}
위 코드는 1~5까지 담긴 int 타입의 벡터 numbers를 범위 기반 for 루프를 사용하여 요소들을 출력하는 예제이다
문자열 순회하기
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
for(auto ch : str) {
std::cout << ch;
}
return 0;
}
이번 코드는 string 타입의 문자열 str을 범위 기반 for문을 통해 순회하여 각 문자를 출력하는 예제이다
결론
C++에서 전체 범위를 순회할 땐 C++의 범위 기반 for문을 사용하면 기존 for문 보다 더욱 간결하고 편리하게 작성할 수 있다 다만 전체 범위를 순회하지 않는다면 기존 for문을 사용해야 하기에 목적에 따라 잘 선택하자