当前位置: 首页 > news >正文

UE C++ TMap容器的 创建和遍历

一.一般分为TMap和TMultiMap

1.TMap

都是先声明,再往里面添加。

这里添加会返回,当前值的引用。可以进行操作。

FString& MyFruit =  FruitMap.Add(5, TEXT("Banana"));MyFruit += TEXT("!!!!!");FruitMap.Add(2, TEXT("Grapefruit"));FruitMap.Add(7, TEXT("Pineapple"));// FruitMap == [// 	{ Key: 5, Value: "Banana"     },// 	{ Key: 2, Value: "Grapefruit" },// 	{ Key: 7, Value: "Pineapple"  }// ]FruitMap.Add(2, TEXT("Pear"));  //添加相同的键,会重置掉原来的// FruitMap == [// 	{ Key: 5, Value: "Banana"    },// 	{ Key: 2, Value: "Pear"      },// 	{ Key: 7, Value: "Pineapple" }// ]FruitMap.Add(4); //添加键,就会添加默认的值,这里就是空串// FruitMap == [// 	{ Key: 5, Value: "Banana"    },// 	{ Key: 2, Value: "Pear"      },// 	{ Key: 7, Value: "Pineapple" },// 	{ Key: 4, Value: ""          }// ]

也可以用Emplace

FruitMap.Emplace(3, TEXT("Orange"));
// FruitMap == [
// 	{ Key: 5, Value: "Banana"    },
// 	{ Key: 2, Value: "Pear"      },
// 	{ Key: 7, Value: "Pineapple" },
// 	{ Key: 4, Value: ""          },
// 	{ Key: 3, Value: "Orange"    }
// ]TMap<int32, FString> FruitMap2;
FruitMap2.Emplace(4,TEXT("Kiwi"));
FruitMap2.Emplace(9, TEXT("Mellon"));
FruitMap2.Emplace(9, TEXT("Mango"));

将两个Map合并在一起

	FruitMap.Append(FruitMap2);

2.TMultiMap

可以重复添加,相同的键

TMultiMap<int32, FString> FruitMultiMap;FruitMultiMap.Add(2, TEXT("Grapefruit"));FruitMultiMap.Add(2, TEXT("Pineapple"));FruitMultiMap.Add(2, TEXT("Mango"));

二.遍历

1.auto& + for循环

	TMap<int32, FString> FruitMap;FruitMap.Emplace(4, TEXT("Kiwi"));FruitMap.Emplace(9, TEXT("Mellon"));FruitMap.Emplace(10, TEXT("Mango"));for (auto& Elem : FruitMap){FPlatformMisc::LocalPrint(*FString::Printf(TEXT("(%d, \"%s\")\n"),Elem.Key,*Elem.Value));}

2.TPair<>& + for循环,其实auto 出来的就师TPair

	for (TPair<int32, FString>& Element : FruitMap){FString Message = FString::Printf(TEXT("(%d, \"%s\")\n"), Element.Key, *Element.Value);FPlatformMisc::LocalPrint(*Message);}

3.迭代器,TMap里的 .CreateConstIterator(),只是他的key,value要用It.key(),*It.Vlaue()方法才能拿到的。

	for (auto It = FruitMap.CreateConstIterator(); It; ++It){FPlatformMisc::LocalPrint(*FString::Printf(TEXT("(%d, \"%s\")\n"),It.Key(),   // same as It->Key*It.Value() // same as *It->Value));}

http://www.dtcms.com/a/483175.html

相关文章:

  • 域名与网站名称的关系企业发展历程网站
  • MyBatis-Flex 来了
  • 带权并查集
  • 建设网站多少钱 郑州浏览器什么网站都能打开的
  • 安卓13_ROM修改定制化-----常用几种去除系统签名类验证的操作步骤解析
  • 安卓导出谷歌包
  • 上海百度网络推广极限优化wordpress
  • 南京市建设监理协会网站dedecms 网站根目录
  • 创建Mybatis框架
  • 从化网站建设方案百度网站好评
  • 电商网站前台模块自己做的网站加载不出验证码
  • 数据结构 03 栈和队列
  • 微商城网站建设哪家好wordpress国内优化
  • 热释电传感器(PIR Sensor)技术深度解析:从物理原理到工程实践
  • 做餐厅网站的需求分析创造网站
  • docker项目打包演示项目(数字排序服务)
  • 诸城网站建设诸城wordpress 删除缓存
  • 自动化三维测量实现精密轴承全尺寸在线测量-中科米堆CASAIM
  • glitch做网站帝国cms做笑话网站
  • 什么网站可以做动图泰州营销型网站
  • OWL与VUE3 的高级组件通信全解析
  • 外贸人常用的网站建设免费网站制作
  • 用 Python + Vue3 打造超炫酷音乐播放器:网易云歌单爬取 + Three.js 波形可视化
  • GRS 认证:再生产品的 “绿色通行证”—— 知识深度解析
  • 常平众展做网站在新西兰做兼职的网站
  • 解决拓扑排序
  • Component template requires a root element, rather than just错误
  • 网站选择空间建筑工程类招聘网站
  • 开源的故障诊断大模型(FDLM):从多模态时序到可解释智能维护
  • 【编号219】中国钢铁工业年鉴(2000-2024)