C 将作为STD :: MAP复制到STD :: MAP的构造
C++ will be struct as key for std::map copied to std::map?
我具有将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
存储键的副本,无论键的类型如何。虽然局部变量point
在addMap
的末尾被破坏,但maps
并未破坏,其元素也不由密钥和值组成。
点将在堆栈上分配,并且在添加映射返回后不应访问。将映射指针添加到按点给出的位置的地图中。地图仍然会在添加图返回之后,请输入。当您向地图添加指针时,您需要请小心指向的记忆至少在地图的寿命中持续存在。当您来自Java时,建议您进行双检查。
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 使用一个考虑到std::map中键值的滚动或换行的键
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将重物插入std::map
- 使用通用值初始化 std::map,不重复
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- C++:当所有条目都保证是唯一时,替代 std::map
- 使用模板化的键类型定义 std::map,该键类型基于作为参数接收的函数
- 如果 KEY 是 std::list 或 std::vector 而不是值,那么 std::map 的默认行为是什么?
- C++如何创建 std::map
- 从其他容器中移动构造"std::map"
- 将 std::map::emplace 与返回 shared_ptr 的函数一起使用是否正确?
- C++中 std::map 的运行时复杂度是多少?
- 为什么在 std::map 上移动无法将元素从一个映射移动到另一个映射
- 使用重载 [] 运算符返回 std::map() 的可赋值
- std::map, std::unordered_map - 缩小初始值设定项列表中的转换范围
- C++ 使用枚举类对象分配 std::map 值
- 静态 std::map instatiation 在类的方法中调用构造函数吗?
- std::map:当元素不可默认构造时创建/替换元素
- Arduino编译器和STL:使用std::vector和std::map