`TMap`是Unreal Engine中的关联容器,类似于C++的`std::map`或`std::unordered_map`。它用于存储键值对,允许你通过键来快速查找值。
以下是`TMap`的一些基本用法:
1. **定义和初始化**
你可以通过指定键类型和值类型来定义`TMap`。例如,以下代码定义了一个将整数映射到字符串的`TMap`:
```cpp
TMap<int32, FString> MyMap;
```
你可以在定义时初始化`TMap`:
```cpp
TMap<int32, FString> MyMap = {
{1, TEXT("one")},
{2, TEXT("two")},
{3, TEXT("three")},
};
```
2. **插入元素**
你可以使用`Add`方法来插入元素:
```cpp
MyMap.Add(4, TEXT("four"));
```
如果键已经存在,`Add`方法会替换现有的值。
3. **查找元素**
你可以使用`Contains`方法来检查键是否存在:
```cpp
if (MyMap.Contains(1)) {
// ...
}
```
你可以使用`Find`方法来查找值:
```cpp
FString* Value = MyMap.Find(1);
if (Value) {
UE_LOG(LogTemp, Warning, TEXT("Found value: %s"), **Value);
}
```
注意`Find`方法返回的是一个指向值的指针。如果键不存在,`Find`方法会返回`nullptr`。
+ `Find`函数返回的是指向键值对值部分的指针。在这种情况下,键值对的值类型是`UMyConfigDataBase*`,所以`Find`函数返回的是指向它的指针,即`UMyConfigDataBase**`。如果找到了匹配的键,`Find`函数返回指向值的指针,这允许你修改找到的值。如果没有找到匹配的键,`Find`函数返回`nullptr`。1. `Find`函数返回的是指向键值对值部分的指针。在这种情况下,键值对的值类型是`UMyConfigDataBase*`,所以`Find`函数返回的是指向它的指针,即`UMyConfigDataBase**`。如果找到了匹配的键,`Find`函数返回指向值的指针,这允许你修改找到的值。如果没有找到匹配的键,`Find`函数返回`nullptr`。
4. **删除元素**
你可以使用`Remove`方法来删除元素:
```cpp
MyMap.Remove(1);
```
5. **遍历元素**
你可以使用范围for循环来遍历`TMap`的元素:
```cpp
for (const auto& KeyValuePair : MyMap) {
UE_LOG(LogTemp, Warning, TEXT("Key: %d, Value: %s"), KeyValuePair.Key, *KeyValuePair.Value);
}
```
`TMap`还有许多其他的方法,例如`Num`(获取元素数量)、`Empty`(删除所有元素)等。你可以参考Unreal Engine的文档或源代码来获取更多信息。