应用现有密钥时,TMap :: Emplace()是否会覆盖?

时间:2020-07-07 02:26:11

标签: c++ unreal-engine4

我通过emplace()或insert()读取了现有键的STL does not allow to overwrite值Map

但是,当应用具有不同值的现有密钥时,它看起来像UE4 TMap的Emplace()一样可以覆盖。

我理解正确吗,还是在TMap中也不应进行覆盖?

1 个答案:

答案 0 :(得分:1)

请记住,虚幻引擎的TMap不等同于C ++的map。您已经弄清楚了,但是Emplace类中的TMap方法与emplace类中C ++的map方法的不同之处在于调用Emplace使用地图中已存在的键替换该键关联的原始值。

对于TMap类,Emplace方法的目的是避免为要插入映射中的键和值创建非原始类型的副本。请注意,Emplace仅适用于具有单个参数构造函数的对象类型的键和值。否则,Emplace方法的行为类似于Add方法。