그냥 게임개발자

TArray - 연산자 본문

Unreal스터디/TArray

TArray - 연산자

sudoju 2024. 1. 7. 22:18

연산자

  • 배열은 일반적인 값 유형으로, 일반적인 생성자 복사나 할당 연산자를 통해 복사할 수 있다.
  • 배열은 엘리먼트를 엄격히 소유하기에, 배열을 복사하면 '깊이'가 있어, 새 배열에는 자체적인 엘리먼트 사본이 생김
TArray<int32> ValArr3;
ValArr3.Add(1);
ValArr3.Add(2);
ValArr3.Add(3);

auto ValArr4 = ValArr3;    // 복사 시작
// ValArr4 == [ 1, 2, 3 ];
ValArr4[0] = 5;
// ValArr3 == [ 1. 2. 3 ];
// ValArr4 == [ 5, 2, 3 ];
  • Append 함수의 대안으로, operator += 를 통해 배열을 연결시킬 수 있다.
ValArr4 += ValArr3;
// ValArr4 == [ 5, 2, 3, 1, 2, 3 ]
  • TArray에는 MoveTemp 함수를 사용해서 부를 수 있는 이동 의미론도 지원됨.
  • 이동 이후 원본 배열은 공백으로 남음
ValArr3 = MoveTemp(ValArr4);
// ValArr3 == [5, 2, 3, 1, 2, 3]
// ValArr4 == []
  • 배열은 operator==나 operator !=를 사용해서 비교할 수 있다.
  • 엘리먼트의 순서가 중요한데, 두 배열이 동등한 경우는 엘리먼트의 수와 순서가 같을 경우만.
  • 엘리먼트는 별도의 operator==를 사용해서 비교한다.
TArray<FString> FlavorArr1;
FlavorArr1.Emplace(TEXT("Chocolate"));
FlavorArr1.Emplace(TEXT("Vanilla"));
// FlavorArr1 == ["Chocolate", "Vanilla"]

auto FlavorArr2 = Str1Array;
// FlavorArr2 == ["Chocolate", "Vanilla"]

bool bComparison1 = FlavorArr1 == FlavorArr2;
// bComparison1 == true

for (auto& Str : FlavorArr2)
{
    Str = Str.ToUpper();
}

// FlavorArr2 == ["CHOCOLATE", "VANILLA"]

bool bComparison2 = FlavorArr1 == FlavorArr2;
// bComparison2 == true, 왜냐하면 FString 비교는 케이스를 무시하기 때문

Exchange(FlavorArr2[0], FlavorArr2[1]);
// FlavorArr2 == ["VANILLA", "CHOCOLATE"]

bool bComparison3 = FlavorArr1 == FlavorArr2;
// bComparison3 == false, 왜냐하면 둘이 순서가 맞지 않기 때

'Unreal스터디 > TArray' 카테고리의 다른 글

TArray - Slack  (1) 2024.01.07
TArray - 힙  (0) 2024.01.07
TArray - Remove  (0) 2024.01.07
TArray - FilterByPredicate  (0) 2024.01.07
TArray - IndexOfByPredicate  (0) 2024.01.02