범위 기반 for 문 (Range-based for loop)
범위 기반 for문은 컨테이너나 배열과 같은 컬렉션을 순회할 때 사용하는 간단한 구문입니다. 기존의 for문에 비해 더 직관적이고 코드가 간결해집니다.
for (Type Variable : Collection) { }
- Type : 반복할 컬렉션의 각 요소의 타입을 나타냅니다.
- Variable : 컬렉션의 각 요소를 하나 씩 받아오는 변수입니다.
- Collection : 순회할 대상이 되는 배열이나 컨테이너(std::vector, std::list 등)입니다.
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {1, 2, 3, 4, 5};
for (const int & x : vec) {
cout << x << " ";
}
return 0;
}
결과값
12345
장점
- 간결함 : 변수 초기화나 반복 조건을 작성할 필요가 없어서 코드가 더 간결하고 읽기 쉬워집니다.
- 실수 감소 : 인덱스 범위나 반복 조건을 잘못 작성하는 실수를 줄일 수 있습니다.
- 가독성 : 컬렉션의 각 요소를 명확하게 순회할 수 있어 코드 가독성이 높아집니다.
단점
- 특정 요소 접근 어려움 : 컬렉션의 모든 요소를 순회하는 특성상 특정 인덱스나 요소에 대한 접근이 불가능합니다. 따라서 인덱스를 사용하는 작업이 필요한 경우에는 기존의 for문을 사용해야 합니다.
- 복잡한 반복 제어 어려움 : 조건에 따라 반복을 중단하거나 건너뛰는 등의 제어가 복잡할 수 있습니다.
const reference
값에 직접 접근하되, 값을 변경할 수 없도록 설정합니다. 복사를 피할 수 있어 성능이 향상되고, 값 변경을 방지할 수 있어 코드의 안정성을 높입니다.
- 참조(&) : 해당 변수를 복사하지 않고 직접 참조한다는 의미입니다. 즉, 메모리 상의 원본 데이터를 복사하지 않고 직접 접근하게 되어, 대체로 성능이 더 효율적입니다. 특히 큰 객체나 데이터 구조를 다룰 때 유리합니다.
- 상수(const) : const를 붙이면 해당 변수를 읽기 전용으로 만들게 됩니다. 즉, 참조된 값은 변경할 수 없게 되며, 이를 통해 불변성을 보장할 수 있습니다.