정의
TArray<int32> IntArray;
배열 만들고 채우기
1. Init
IntArray.Init(10, 5);
// IntArray == [10,10,10,10,10]
2. Add, Emplace
TArray<FString> StrArr;
StrArr.Add (TEXT("Hello"));
StrArr.Emplace(TEXT("World"));
Add , Emplace 차이
Add는 앨리먼트 유형의 인스턴스를 배열에 복사
Emplace는 지정한 인수를 사용하여 엘리먼트 유형의 인스턴스를 새로 생성
성능: Emplace > Add
Emplace는 호출되는 곳에 임시 생성 후 컨테이너에 복사 내지 이동하는 불필요한 절차를 피할수 있다.
3. Append
FString Arr[] = { TEXT("of"), TEXT("Tomorrow") };
StrArr.Append(Arr, ARRAY_COUNT(Arr));
// StrArr == ["Hello","World","of","Tomorrow"]
4. AddUnique
StrArr.AddUnique(TEXT("!"));
// StrArr == ["Hello","World","of","Tomorrow","!"]
StrArr.AddUnique(TEXT("!"));
// StrArr is unchanged as "!" is already an element
5. Insert
StrArr.Insert(TEXT("Brave"), 1);
// StrArr == ["Hello","Brave","World","of","Tomorrow","!"]
6. SetNum
StrArr.SetNum(8);
// StrArr == ["Hello","Brave","World","of","Tomorrow","!","",""]
StrArr.SetNum(6);
// StrArr == ["Hello","Brave","World","of","Tomorrow","!"]
반복 처리
1.
FString JoinedStr;
for (auto& Str : StrArr)
{
JoinedStr += Str;
JoinedStr += TEXT(" ");
}
// JoinedStr == "Hello Brave World of Tomorrow ! "
2.
for (int32 Index = 0; Index != StrArr.Num(); ++Index)
{
JoinedStr += StrArr[Index];
JoinedStr += TEXT(" ");
}
3.
for (auto It = StrArr.CreateConstIterator(); It; ++It)
{
JoinedStr += *It;
JoinedStr += TEXT(" ");
}
소팅
1. Sort
StrArr.Sort();
// StrArr == ["!","Brave","Hello","of","Tomorrow","World"]
StrArr.Sort([](const FString& A, const FString& B) {
return A.Len() < B.Len();
});
// StrArr == ["!","of","Hello","Brave","World","Tomorrow"]
2. HeapSort
StrArr.HeapSort([](const FString& A, const FString& B) {
return A.Len() < B.Len();
});
// StrArr == ["!","of","Hello","Brave","World","Tomorrow"]
3. StableSort (기존 사전식 소팅 이후 상대 순서가 유지)
StrArr.StableSort([](const FString& A, const FString& B) {
return A.Len() < B.Len();
});
// StrArr == ["!","of","Brave","Hello","World","Tomorrow"]
쿼리
1. Find
int32 Index;
if (StrArr.Find(TEXT("Hello"), Index))
{
// Index == 3
}
2. FindLast
int32 IndexLast;
if (StrArr.FindLast(TEXT("Hello"), IndexLast))
{
// IndexLast == 3, because there aren't any duplicates
}
3. IndexOfByKey
int32 Index = StrArr.IndexOfByKey(TEXT("Hello"));
// Index == 3
4. IndexOfByPredicate
int32 Index = StrArr.IndexOfByPredicate([](const FString& Str){
return Str.Contains(TEXT("r"));
});
// Index == 2
제거
1. Remove
TArray<int32> ValArr;
int32 Temp[] = { 10, 20, 30, 5, 10, 15, 20, 25, 30 };
ValArr.Append(Temp, ARRAY_COUNT(Temp));
// ValArr == [10,20,30,5,10,15,20,25,30]
ValArr.Remove(20);
// ValArr == [10,30,5,10,15,25,30]
2. RemoveSingle
ValArr.RemoveSingle(30);
// ValArr == [10,5,10,15,25,30]
3. RemoveAt
ValArr.RemoveAt(2); // 인덱스 2 엘리먼트를 제거합니다
// ValArr == [10,5,15,25,30]
ValArr.RemoveAt(99); // 런타임 오류가 발생합니다
// 인덱스 99 에 엘리먼트가 없기 때문입니다
4. RemoveAll
ValArr.RemoveAll([](int32 Val) {
return Val % 3 == 0;
});
// ValArr == [10,5,25]
4. Empty
ValArr2.Empty();
// ValArr2 == []
'공부하자 > Unreal4' 카테고리의 다른 글
[Ue4] 리플리케이션 그래프 및 CPU 최적화 기법 (0) | 2022.03.30 |
---|---|
[Ue4] 엔진 실행파일 렌더링 없이 실행시키는 방법 (0) | 2022.03.10 |
[Ue4] Garbage Collection, Smart Pointer 정리 (0) | 2022.02.17 |
[Ue4] 메모리 누수 체크 (Memory leak check) (0) | 2022.02.15 |
[Ue4] 스트링 변환 정리 (0) | 2022.02.12 |