Foreach(포이치) 루프는 배열이나 컬렉션의 모든 요소를 인덱스 관리 없이 간결하게 순회할 수 있도록 해주는 반복문입니다. C++와 C# 모두 foreach 스타일의 문법을 지원하며, 이를 활용하면 코드의 가독성과 안정성을 크게 높일 수 있습니다. 이번 글에서는 두 언어에서 foreach를 사용하는 방법을 예제 코드와 함께 자세히 살펴보겠습니다.
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
위 코드에서 for (int ele : myArr) 구문은 배열 myArr의 요소를 처음부터 끝까지 하나씩 변수 ele에 대입하며 반복합니다. 별도의 인덱스 변수나 종료 조건이 필요 없기 때문에 전통적인 for 루프보다 훨씬 간결하고 실수를 줄일 수 있습니다.
C#에서의 Foreach
C#은 전용 foreach 키워드를 제공하여 컬렉션의 항목을 순서대로 순회할 수 있습니다. 아래 예제는 길이가 10인 정수 배열을 생성하고, foreach 루프를 사용해 각 요소의 값과 인덱스를 출력하는 코드입니다.
예제
using System;
namespace ArrayApplication {
class MyArray {
static void Main(string[] args) {
int [] n = new int[10]; /* n은 10개의 정수로 이루어진 배열 */
for ( int i = 0; i < 10; i++ ) {
n[i] = i + 100;
}
/* 배열의 각 요소 값 출력 */
foreach (int j in n ) {
int i = j-100;
Console.WriteLine("Element[{0}] = {1}", i, j);
}
Console.ReadKey();
}
}
}실행 결과
Element[0] = 100 Element[1] = 101 Element[2] = 102 Element[3] = 103 Element[4] = 104 Element[5] = 105 Element[6] = 106 Element[7] = 107 Element[8] = 108 Element[9] = 109
예제에서 먼저 일반적인 for 루프로 배열에 값을 채운 뒤, foreach (int j in n) 구문을 통해 배열의 모든 요소를 차례대로 읽어 출력했습니다. 이처럼 C#의 foreach는 배열뿐 아니라 List, Dictionary 등 다양한 컬렉션에도 그대로 적용할 수 있습니다.
Foreach 루프의 주요 장점
- 인덱스 오류 방지: 범위를 벗어나는 접근 실수를 사전에 줄일 수 있습니다.
- 가독성 향상: 반복 로직이 단순해져 코드를 이해하기 쉽습니다.
- 다양한 컬렉션 지원: 배열뿐 아니라 리스트, 딕셔너리 등 여러 자료구조에 활용 가능합니다.
마무리
C++의 범위 기반 for 루프와 C#의 foreach 키워드는 목적이 같지만 문법이 조금씩 다릅니다. 두 언어 모두 단순히 컬렉션을 순회하는 작업이라면 foreach 스타일의 반복문을 사용하는 것이 코드를 더 깔끔하고 안전하게 만들어 줍니다. 상황에 맞게 적절히 활용해 보시기 바랍니다.