The following content below has been taken from https://www.unrealengine.com/en-US/blog/ranged-based-for-loops?sessionInvalidated=true
…Here is an example of how this can really clean up common game code. Previously if I wanted to iterate over an array of AActor* pointers, it used to look like:
TArray<AActor*> Actors;
for (int32 ActorIndex=0; ActorIndex<Actors.Num(); ActorsIndex++)
{
AActor* Actor = Actors[ActorIndex];
Actor->SetActorLocation(NewLocation);
}
But using the ‘range-based for loop’ syntax it now looks like:
TArray<AActor*> Actors;
for (AActor* Actor : Actors)
{
Actor->SetActorLocation(NewLocation);
}
How nice is that! Here is another example with a TMap – it used to look like this:
TMap<AActor*, FMyStruct> ActorStructs;
for (auto ActorStructIt = ActorStructs.CreateIterator(); ActorStructIt; ++ActorStructIt)
{
AActor* Actor = ActorStructIt.Key();
FMyStruct& Data = ActorStructIt.Value();
}
But now it looks like:
TMap<AActor*, FMyStruct> ActorStructs;
for (const auto& Entry : ActorStructs)
{
AActor* Actor = Entry.Key;
const FMyStruct& Data = Entry.Value;
}