C++ STL의 vector, set, map과 용도가 유사하지만 set과 map의 경우에는 내부적으로는 다르게 구현되어 있음.
TArray의 배열의 시작 부분의 포인터를 GetData 함수를 통해 가져올 수 있음.
MyGameInstance.h
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Engine/GameInstance.h"
#include "MyGameInstance.generated.h"
/**
*
*/
UCLASS()
class UNREALCONTAINER_API UMyGameInstance : public UGameInstance
{
GENERATED_BODY()
public:
virtual void Init() override;
};
MyGameInstance.cpp
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyGameInstance.h"
#include "Algo/Accumulate.h"
void UMyGameInstance::Init()
{
Super::Init();
const int32 ArrayNum = 10;
TArray<int32> Int32Array;
for (int32 ix = 1; ix <= ArrayNum; ++ix)
{
Int32Array.Add(ix);
}
//2,4,6,8,10 제거
//RemoveAll 함수에서 조건에 해당하는 부분을 람다함수로 넣는게 일반적임.
//짝수인것만 제거
Int32Array.RemoveAll(
[](int32 Val)
{
return Val % 2 == 0;
}
);
Int32Array += {2, 4, 6, 8, 10};
TArray<int32> Int32ArrayCompare;
int32 CArray[] = { 1, 3, 5, 7, 9, 2, 4, 6, 8 , 10 };
Int32ArrayCompare.AddUninitialized(ArrayNum);
FMemory::Memcpy(Int32ArrayCompare.GetData(), CArray, sizeof(int32) * ArrayNum);
ensure(Int32Array == Int32ArrayCompare);
int32 Sum = 0;
for (const int32& Int32Elem : Int32Array)
{
Sum += Int32Elem;
}
ensure(Sum == 55);
//배열 안에 모든값을 더해주는 함수
int32 SumByAlgo = Algo::Accumulate(Int32Array, 0); //0은 처음 시작 값
ensure(Sum == SumByAlgo);
);