C 将作为STD :: MAP复制到STD :: MAP的构造

C++ will be struct as key for std::map copied to std::map?

本文关键字:STD MAP 复制      更新时间:2023-10-16

我具有将struct用作std::map的关键的功能。但是,如果我退出功能,我不确定该结构会发生什么。将存储在std::map中,或者在退出功能范围并在std::map中进一步搜索使用时将被删除?

    //Map is standard class
    class Map { ... }
    //hashmap of maps
    std::map<Point, Map*> maps;
    void Maps::addMap(Map *map, int row, int column) {
      Point point = {row, column};
      maps[point] = map;
    }

编辑:

感谢Thomas Sablik

我知道像INT这样的基本类型被复制,但我不知道结构会发生什么。如果被复制,我很安全

编辑2

我更改了问题,我不知道要正确提出什么来获得答案,对不起。

std::map存储键的副本,无论键的类型如何。虽然局部变量pointaddMap的末尾被破坏,但maps并未破坏,其元素也不由密钥和值组成。

点将在堆栈上分配,并且在添加映射返回后不应访问。将映射指针添加到按点给出的位置的地图中。地图仍然会在添加图返回之后,请输入。当您向地图添加指针时,您需要请小心指向的记忆至少在地图的寿命中持续存在。当您来自Java时,建议您进行双检查。