TArray¸¦ TMapÀ¸·Î ÀúÀåÇÑ´Ù. ±¸Á¶Ã¼¸¦ TArray¿¡ ÀúÀå ÇÏ°í TMap¿¡´Â ±¸Á¶Ã¼ °ªÁßÀÇ Çϳª¸¦ Å°·Î »ç¿ëÇÏ°í °ª¿¡´Â TArray¿¡ ÀúÀåµÈ ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ »ç¿ë ÇÑ´Ù. TMap TMapÀº STLÀÇ map°ú ºñ½ÁÇÏ´Ù. °ª ÀԷ½à Áߺ¹ °ªÀÌ µé¾î¿À¸é ¸¶Áö¸·À» µ¤¾î ¾´´Ù. [ ] ¿¬»êÀÚ·Î °Ë»ö½Ã °ªÀÌ ¾øÀ¸¸é ÇÁ·Î±×·¥ÀÌ Å©·¡½¬ µÈ´Ù. Find·Î °Ë»öÇÒ¶§ ¾øÀ¸¸é nullptr°¡ ¸®ÅϵȴÙ. TMap<FString, int> map;
map.Add(FString(TEXT("1¹ø")), 1); map.Add(FString(TEXT("2¹ø")), 2); map.Add(FString(TEXT("3¹ø")), 3); map.Add(FString(TEXT("3¹ø")), 4); int v1 = map[FString(TEXT("3¹ø"))]; //4 int v2 = map[FString(TEXT("2¹ø"))]; //2 //int v3 = map[FString(TEXT("9¹ø"))]; //¾ð¸®¾ó Å©·¡½Ã int* v3 = map.Find(FString(TEXT("9¹ø"))); //°ªÀÌ ¾øÀ¸¸é nullptr int* v4 = map.Find(FString(TEXT("1¹ø"))); //1 TSet TSet´Â STLÀÇ set¿Í ºñ½ÁÇÏ´Ù. FindId·Î ã´Â Å°°¡ ¾øÀ¸¸é -1À» ¸®ÅÏÇÑ´Ù. TSet<FString> StringSet;
StringSet.Emplace(TEXT("1¹ø")); StringSet.Emplace(TEXT("2¹ø")); StringSet.Emplace(TEXT("3¹ø")); StringSet.Emplace(TEXT("3¹ø")); int count = StringSet.Num(); FSetElementId id1 = StringSet.FindId(TEXT("1¹ø")); //0 FSetElementId id2 = StringSet.FindId(TEXT("2¹ø")); //1 FSetElementId id3 = StringSet.FindId(TEXT("3¹ø")); //2 FSetElementId id4 = StringSet.FindId(TEXT("4¹ø")); //-1 TArray To TMap TArray·Î °Ë»öÇÏ¸é ¼øÂ÷ °Ë»öÀ» ÇØ¾ß Çϱ⠶§¹®¿¡ ±¸Á¶Ã¼ Áß¿¡ Çϳª¸¦ Å°·Î ÁöÁ¤ÇÏ°í TMap¿¡ ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ÀúÀåÇÑ´Ù. Çì´õ ÆÄÀÏ USTRUCT()
struct FItem { GENERATED_BODY() UPROPERTY() FString mID; UPROPERTY() int mPrice; FItem() { mID = ""; mPrice = 100; } FItem(const FString& id, int price) { mID = id; mPrice = price; } }; ¼Ò½º ÆÄÀÏ bool LogFItem(const FString& key, TMap<FString, FItem*>& map)
{ FItem** ppItem = map.Find(key); if (ppItem) { FItem* pItem = *ppItem; UE_LOG(LogTemp, Warning, TEXT("%s, %d"), *pItem->mID, pItem->mPrice); return true; } else { UE_LOG(LogTemp, Warning, TEXT("%s Not found key"), *key); return false; } } void UMyGameInstance::TaarayToTMap() { TArray<FItem> itemList; itemList.Emplace(FItem(TEXT("111"), 10)); itemList.Emplace(FItem(TEXT("222"), 20)); itemList.Emplace(FItem(TEXT("333"), 30)); TMap<FString, FItem*> itemMap; for (auto& item : itemList) { itemMap.Add(item.mID, &item); } LogFItem("333", itemMap); LogFItem("222", itemMap); LogFItem("777", itemMap); } FItem ±¸Á¶Ã¼ÀÇ mID ¸â¹ö º¯¼ö¸¦ Å°·Î ÇÏ°í FItem ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ °ªÀ¸·Î ÀúÀåÇÑ´Ù. TMap<FString, FItem*> itemMap; for (auto& item : itemList) { itemMap.Add(item.mID, &item); } mID °ªÀ» Å°·Î °Ë»öÇÑ´Ù. Å°°¡ ¾øÀ¸¸é nullptr¸¦ ¸®ÅÏÇÑ´Ù. FItem** ppItem = map.Find(key); if (ppItem) { FItem* pItem = *ppItem; UE_LOG(LogTemp, Warning, TEXT("%s, %d"), *pItem->mID, pItem->mPrice); return true; } |