Как обновить уникальные предметы в TArray - PullRequest
0 голосов
/ 08 марта 2020

Я добавляю и обновляю уникальные элементы в 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, так как я хочу, чтобы он собирался мусором и быть сериализованным. Я не уверен, поддерживается ли оба типа последними типами контейнеров.

...