UEC++ 容器:TMap

TMap

  • UE中最常用的容器,此容器是关联型容器,存储对象均有一个关联值,通过键值可以高效的进行对象访问
  • TMap为同质容器,存储数据类型必须相同,TMap 也是值类型,支持常规复制、赋值和析构函数操作,以及其元素较强的所有权。映射被销毁时,其元素也将被销毁。键类型必须为值类型,不能使用指针。
  • Map的结构例如钥匙和锁,一把钥匙找一把锁,他们之间是一一对应的关系!

构建,添加数据:

构建时,需要选择好容器的键值类型和元素类型,添加时必须提供键值。如果添加的数据键值已经存在则会覆盖之前的添加!

    // 构建容器,键值类型为FStreing,数据类型为int32
    TMap<FString, int32> map;
    // 向容器添加元素,如果添加相同元素,会覆盖之前的内容
    map.Add(TEXT("map01"), 99); 
    // 没有填值,将为默认值
    map.Add(TEXT("map02"));
    // 这种方式可以修改值,但是不能添加,因为map03不存在
    map[TEXT("map03")] = 90;

遍历操作:

    for (auto&Item : map)
    {
        // 获取键与值对
        Item.Key; 
        Item.Value;
    }
    for (auto It = map.CreateIterator(); It; ++It)
    { 
        It.Key();
        // 获得值,返回的是引用,可以在外部修改
        It.Value() = 100;
        It->Value;
    }
    for (auto It = map.CreateConstIterator(); It; ++It)
    {
        // 获取键值对,无法修改值
        It.Key();
        It.Value();
    }

合并TMap:

Append合并操作,传入的Map如果有和被合并的Map键值相同数据,将采取覆盖操作

map.Append(map2);

 查询函数:

    map.Num(); // 获取容器中元素的数量
    // 通过索引运算符使用键值获取值引用, 可以直接用来修改元素的值
    map[TEXT("map01")]; 
    // 检查是否包含给定的键值 返回布尔值
    map.Contains(TEXT("map01"));
    // 返回键值绑定的元素指针没,如果没有内容返回空,非返回引用
    map.Find(TEXT("map01"));

移除函数:

TMap有Reset函数,清除内容,但保留空间

    map.Remove(TEXT("map01")); // 使用给定的键值移除元素
    map.Empty(); // 清空容器

 

posted @ 2022-09-19 14:20  黎沐不吃香菜  阅读(1217)  评论(0)    收藏  举报