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 루프를 활용하면 코드가 짧아지고 가독성이 크게 향상됩니다.