WinCNT

범위 기반 for문 본문

게임 프로그래밍(학습 내용 정리)/Modern C++

범위 기반 for문

WinCNT_SSS 2022. 3. 24. 14:01

범위 기반 for문


범위 기반 for문은 일반적인 for문 보다 생산성을 높일 수 있는 문법이다

 

다음과 같은 일반적인 for문이 있다고 하자

int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

// 일반 for문
for (size_t i = 0; i < 10; i++)
{
    cout << arr[i] << endl;
}

위의 코드를 범위 기반 for문을 사용하면 다음과 같이 바꿀 수 있다

// 범위 기반 for문
for (int elem : arr)
{
    cout << elem << endl;
}

// auto를 이용한 범위 기반 for문
for (auto elem : arr)
{
    cout << elem << endl;
}

// arr을 복사하지 않고 접근만 하는 for문
for (const auto& elem : arr)
{
    cout << elem << endl;
}

포인터와 범위 기반 for문

포인터의 경우 범위를 알 수 없으므로 범위 기반 for문을 사용할 수 없다

// 배열의 크기를 알 수 없으므로 동적 배열(포인터)에 사용 불가
//int* buff = new int[10];
//for (auto x : buff) x = 0;

동적 기반 배열에 범위 기반 for문을 사용하고 싶을 경우는 vector를 쓰자

vector<int> buff(10);
for (auto x : buff) x = 0;

 

SSS