Unreal - 범위 기반 루프

뭉크의 개발·2024년 2월 15일
0

Unreal

목록 보기
10/10

반복문의 경우 평소 쓰는 방법은

for (int32 i = 0; i < Actors.Num(); i++)
{
    FString ActorName = Actors[i] -> GetActorNameOrLabel();
    UE_LOG(LogTemp, Display, TEXT("Overlapping: %s"), *ActorName); 
}

이렇게 주로 쓴다.

그러나 C++에서는 범위 기반 루프라는게 존재한다.

범위 기반 루프

범위 기반 루프는 C++ 11에서 도입된 문법으로, 컨테이너의 모든 요소를 간결하고 읽기 쉬운 방식으로 반복하는데 사용된다.
컨테이너의 시작부터 끝까지 순회하며, 사용자가 인덱스를 직접 관리하거나 반복자를 명시적으로 사용할 필요가 없게 해준다.

for (declaration : range_expression)
{
	// loop body
}

위 반복문을 아래와 같이 바꿀 수 있다.

for (AActor* Actor : Actors)
{
    FString ActorName = Actor -> GetActorNameOrLabel();
    UE_LOG(LogTemp, Display, TEXT("Overlapping: %s"), *ActorName); 
}

왜 쓸까?

  1. 코드 간결성, 가독성
    범위 기반 for 루프는 인덱스 관리가 필요없기 때문에 실수의 가능성이 적어지고, 의도가 명확해진다.
  2. 인덱스 접근
    기존의 반복문은 배열의 인덱스에 직접 접근할 때 유용하고, 범위 기반 for 루프는 인덱스 없이 각 요소에 직접 접근한다.
  3. 성능 차이
    크게 차이는 없지만, 범위 기반 for 루프가 내부적으로 최적화 되어 있어서 같은 작업을 수행할 때 약간 더 효율적일 수 있다.

참조자 사용

for (auto& n : v) 
{
	n *= 2;
}

요소를 수정하려면 요소의 참조자를 사용한다. auto&를 사용하여 v의 각 요소에 대한 참조를 얻고, 값을 수정한다.

const

for (const auto& n : v)
{
	std::cout << n << std::endl; // 요소를 읽기만 함
}

0개의 댓글