Я добавляю и обновляю уникальные элементы в TArray
*, используя следующий метод.
USTRUCT() struct FMyObject
{
GENERATED_BODY()
UPROPERTY(SaveGame) // example for serialization
FName key;
UPROPERTY(SaveGame) // example for serialization
int someContent;
}
UCLASS() class FMyObjectOwner : public UObject
{
GENERATED_BODY()
AddOrReplaceUnique(const FMyObject& newObject)
{
// Remove possibly existing entry.
const auto index = myObjects.IndexOfByKey(newObject.key);
if (index != INDEX_NONE)
{
myObjects.RemoveAtSwap(index, 1, false);
}
// Add new.
myObjects.Add(newObject);
}
UPROPERTY(SaveGame) // example for serialization
TArray<FMyObject> myObjects;
}
Существует ли более короткий или более удобный способ (удаление и добавление за один вызов?) Для обновления уникальные предметы в TArray
с использованием UnrealEngine> = 4.24?
* Я использую TArray
вместо TMap
или TSet
, так как я хочу, чтобы он собирался мусором и быть сериализованным. Я не уверен, поддерживается ли оба типа последними типами контейнеров.