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

C++와 Java의 foreach 루프 완벽 정리: 개념, 문법, 예제까지

foreach 루프란?

C++와 Java에는 일반적인 for 루프 외에 foreach 루프라는 또 다른 형태의 반복문이 존재합니다. C 언어에는 없는 문법으로, C++11 표준과 Java JDK 1.5.0부터 도입되었습니다.

foreach 루프의 가장 큰 장점은 초기화, 조건 검사, 증감 연산 과정 없이도 배열이나 컨테이너의 요소에 매우 빠르게 접근할 수 있다는 점입니다. 따라서 하나의 배열이나 컨테이너에 담긴 모든 요소를 순차적으로 처리할 때 특히 유용합니다.

참고로 이 루프는 'foreach'라고 불리지만, 실제 코드 작성 시에는 for 키워드를 사용합니다. 다만 일반적인 for 루프와는 문법 형식이 다릅니다.

기본 문법

for(datatype item : Array) {
}

배열(Array)의 각 요소가 차례대로 변수 item에 대입되며, 모든 요소를 한 번씩 순회하고 나면 루프가 자동으로 종료됩니다.

C++에서의 foreach 루프

C++11부터는 범위 기반 for 루프(range-based for loop)를 통해 foreach와 동일한 기능을 사용할 수 있습니다.

예제

#include <iostream>
using namespace std;
int main() {
    int myArr[] = { 99, 15, 67 };
    // foreach 루프
    for (int ele : myArr)
        cout << ele << endl;
}

실행 결과

99
15
67

위 예제에서는 인덱스나 반복 조건을 직접 관리하지 않고도 배열 myArr의 세 요소가 순서대로 출력됩니다.

Java에서의 foreach 루프

Java에서는 이를 향상된 for 문(enhanced for statement)이라고 부르며, 정수 배열뿐 아니라 문자열 배열 등 다양한 자료형에 활용할 수 있습니다.

예제

public class Test {
    public static void main(String args[]) {
        int [] numbers = {10, 20, 30, 40, 50};
        for(int x : numbers ) {
            System.out.print( x );
            System.out.print(",");
        }
        System.out.print("\n");
        String [] names = {"James", "Larry", "Tom", "Lacy"};
        for( String name : names ) {
            System.out.print( name );
            System.out.print(",");
        }
    }
}

실행 결과

10, 20, 30, 40, 50,
James, Larry, Tom, Lacy,

정수형 배열 numbers와 문자열 배열 names를 각각 foreach 루프로 순회하여 모든 요소를 간결하게 출력했습니다. 이처럼 foreach 루프를 활용하면 코드가 짧아지고 가독성이 크게 향상됩니다.