TArray

Untitled

Untitled

Untitled

C++ STL의 vector, set, map과 용도가 유사하지만 set과 map의 경우에는 내부적으로는 다르게 구현되어 있음.

Untitled

Untitled

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);

	);

TSet