프로그래밍/C++

5.범위기반 for문

데일리 백수 2025. 1. 2. 22:39

1. 기존 C 스타일 배열 반복의 문제점

  • C 스타일 배열에서는 반복문을 사용할 때, 배열의 크기를 따로 관리하거나 지정해야 했습니다.
  • 아래 예시는 배열의 요소를 모두 출력하는 C 스타일 반복문입니다:
     
     
  • 문제점:
    • 배열의 크기를 명시적으로 계산해야 하므로 코드가 복잡해짐.
    • 반복 횟수를 잘못 계산하거나 초과 접근하는 경우 버그가 발생할 위험이 있음.
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);  // 배열 크기를 직접 계산
for (int i = 0; i < size; ++i) {
    std::cout << arr[i] << " ";
}

2. C++ 범위 기반 for문

C++11부터 도입된 범위 기반 for문은 배열이나 컨테이너의 요소를 자동으로 순회할 수 있는 간단하고 직관적인 방법을 제공합니다.

기본 문법

for (요소_타입 변수명 : 컨테이너_또는_배열) {
    // 반복문 블록
}

예제: 배열 출력

#include <iostream>

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    for (int num : arr) {  // 배열의 각 요소를 num에 복사
        std::cout << num << " ";
    }
    return 0;
}

출력:
1 2 3 4 5


3. 범위 기반 for문의 장점

3.1 코드의 간결성

  • 반복문을 작성할 때 배열의 크기 계산이나 반복 조건 설정이 필요하지 않습니다.
  • 컨테이너의 요소 개수에 따라 자동으로 루프가 설정됩니다.

3.2 유지보수성 향상

  • 배열 크기나 컨테이너가 변경되어도 반복문 자체를 수정할 필요가 없습니다.

3.3 참조로 접근하여 값 변경 가능

  • 배열 요소를 참조형으로 접근하면 원본 값을 직접 변경할 수 있습니다
     
for (int& num : arr) {  // 참조로 접근
    num *= 2;           // 배열의 각 요소를 두 배로 변경
}

3.4 읽기 전용(const 참조)

  • 값 변경이 필요 없는 경우, const 참조를 사용해 안전성을 높일 수 있습니다:
     
for (const int& num : arr) {  // 읽기 전용 참조
    std::cout << num << " ";
}

'프로그래밍 > C++' 카테고리의 다른 글

8. 함수 템플릿  (0) 2025.01.03
6. 디폴트 매개변수(파라미터)  (1) 2025.01.02
4.cpp 참조형  (1) 2025.01.02
3.C++의 메모리 동적할당  (0) 2025.01.02
2. cpp의 변수, 그리고 auto  (0) 2025.01.01