Num
- 배열에 엘리먼트가 몇 개인지 확인할 수 있다.
int32 Count = StrArr.Num();
- C 스타일 API 같은 것과의 상호 정보 교환을 위해 배열 메모리에 직접 접근할 필요가 있는 경우, GetData 함수를 사용해서 배열 내 엘리먼트에 대한 포인터를 반환시킬 수 있음.
- 이 포인터는 배열이 존재하는 한에서, 그리고 배열에 대한 변형 연산이 적용되기 전에만 유효하다.
- 오직 StrPtr에서의 Num 인덱스만이 레퍼런스 해제 가능(dereferenceable)하다.
FString* StrPtr = StrArr.GetData();
- 컨테이너가 const인 경우, 반환되는 포인터 역시 const이다.(읽기 전용)
- 컨테이너의 엘리먼트가 얼마나 큰지 물어볼 수 있음
uint32 ElementSize = StrArr.GetTypeSize();
- 엘리먼트 값을 얻으려면, operator[] 인덱싱을 사용해 원하는 엘리먼트에 대한 0 시작 인덱스 값을 전해주면 된다.
FString Elem1 = StrArr[1];
// Elem1 == "of"
- 유효하지 않은 인덱스, 즉 0 미만이나 Num() 이상 값을 전해주면, 실행시간 오류가 생김
- 컨테이너에 특정 인덱스가 유효한지 IsValidIndex 함수를 통해 물어볼 수 있다.
bool bValidM1 = StrArr.IsValidIndex(-1);
bool bValid0 = StrArr.IsValidIndex(0);
bool bValid5 = StrArr.IsValidIndex(5);
bool bValid6 = StrArr.IsValidIndex(6);
- operator[] 는 레퍼런스를 반환하므로, 배열이 const가 아니라는 가정하에 배열 내 엘리먼트를 변형시키는데 사용 할 수 있음
StrArr[3] = StrArr[3].ToUpper();
// StrArr == ["!", "of", "Brave", "HELLO", "World", "Tomorrow"]
- GetData 함수처럼 Operaotr[]도 배열이 const인 경우 const 레퍼런스를 반환한다.
- Last 함수를 사용하여 배열 끝에서부터 역순으로 인덱스를 사용할 수도 있다.
- 인덱스 기본값은 0이다.
- Top 함수는 Last의 동의어로 인덱스를 받지 않는다는 점이 다르다.
FString ElemEnd = StrArr.Last();
FString ElemEnd0 = StrArr.Last(0);
FString ELemEnd1 = StrArr.Last(1);
FString ElemTop = StrArr.Top();
// ElemEnd == "Tomorrow"
// ElemEnd0 == "Tomorrow"
// ElemEnd1 == "World"
// ElemTop == "Tomorrow"
- 배열에 특정 엘리먼트가 들어있는지 물어볼 수 있다.
bool bHello = StrArr.Contains(TEXT("Hello"));
bool bGoodbye = StrArr.Contains(TEXT("Goodbye"));
- 또는 배열에 지정된 술부와 일치하는 엘리먼트가 있는지 물어볼 수도 있다.
bool bLen5 = StrArr.ContainsByPredicate([](const Fstring& Str)
{
return Str.Len() == 5;
});
bool bLen6 = StrArr.ContainsByPredicate([](const FString& Str)
{
return Str.Len() == 6;
});