Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ vs Java: Foreach(범위 기반) 루프 완벽 비교

C++과 Java에는 foreach 루프라고 불리는 또 다른 종류의 반복문이 존재합니다. Foreach 루프는 기존 for 루프를 변형한 형태로, 주로 컨테이너(container)에 저장된 데이터에 접근할 때 사용됩니다.

일반적인 for 루프처럼 인덱스 변수를 초기화하거나 조건식을 매번 검사할 필요가 없기 때문에, 배열이나 컬렉션의 요소를 훨씬 간결하고 빠르게 순회할 수 있습니다. 즉, foreach 루프는 "어떤 동작을 n번 반복"하는 것이 아니라, "컨테이너의 각 요소마다 동작을 수행"하는 데 특화된 반복문입니다.

참고로 C++에서는 C++11부터 범위 기반 for 루프(range-based for loop)라는 이름으로 도입되었으며, Java에서는 Java 5부터 향상된 for 문(enhanced for statement)이라는 이름으로 제공됩니다.

그럼 C++과 Java에서 foreach 루프가 실제로 어떻게 사용되는지 예제를 통해 살펴보겠습니다.

C++ Foreach 루프 예제

#include <iostream>
using namespace std;
int main() {
    int arr[] = { 11, 22, 33, 44, 55, 66, 77, 88, 99 };
    for (int a : arr) //foreach 루프
        cout << a << endl;
}

실행 결과

11
22
33
44
55
66
77
88
99

위 코드에서 for (int a : arr) 구문은 배열 arr의 첫 번째 요소부터 마지막 요소까지 차례대로 변수 a에 복사하여 순회합니다. 인덱스 관리나 경계 조건 검사가 전혀 필요 없으므로 코드가 매우 깔끔해집니다.

Java Foreach 루프 예제

public class Test {
    public static void main(String[] args) {
        int arr[] = { 11, 22, 33, 44, 55, 66, 77, 88, 99 };
        for (int a : arr)
            System.out.println(a);
    }
}

실행 결과

11
22
33
44
55
66
77
88
99

Java의 경우도 문법이 거의 동일합니다. for (int a : arr) 형태로 작성하면 배열의 모든 요소가 순서대로 a에 대입되며, 루프 본문이 각 요소에 대해 실행됩니다.

정리

  • Foreach 루프는 초기화·조건·증감식 없이 컨테이너의 모든 요소를 자동으로 순회합니다.
  • 배열뿐 아니라 C++의 STL 컨테이너(vector, list 등), Java의 컬렉션(List, Set 등)에도 활용할 수 있습니다.
  • 요소를 수정하지 않고 단순히 읽기만 하는 순회 작업에서 가독성과 안전성 면에서 큰 장점을 가집니다.