在深度 std::unordered_map 中插入唯一指针
Inserting unique pointers in deep std::unordered_map
如何在我拥有的这个深度无序映射中插入唯一指针?
std::unordered_map<uint64_t, std::unordered_map<uint64_t, std::unordered_map<uint64_t, std::unique_ptr<MyStruct>>>>
(C++14)
给定一张地图
std::unordered_map<uint64_t, std::unordered_map<uint64_t, std::unordered_map<uint64_t, std::unique_ptr<MyStruct>>>> m;
还有一个unique_ptr
auto s = std::make_unique<MyStruct>();
您可以像这样在地图中插入它:
m[1][2][3] = std::move(s);
这是我想出的方法:
std::unordered_map<uint64_t, std::unordered_map<uint64_t, std::unordered_map<uint64_t, std::unique_ptr<MyStruct>>>> myMap;
auto ptr = std::make_unique<MyStruct>();
// Insert at 17, 18, 19:
std::unordered_map<uint64_t, std::unique_ptr<MyStruct>> tmpLevel3Map;
tmpLevel3Map.emplace(19, std::move(ptr));
std::unordered_map<uint64_t, std::unordered_map<uint64_t, std::unique_ptr<MyStruct>>> tmpLevel2Map;
tmpLevel2Map.emplace(18, std::move(tmpLevel3Map));
myMap.emplace(17, std::move(tmpLevel2Map));
如何在我拥有的这个深度无序映射中插入唯一指针?
std::unordered_map<uint64_t, std::unordered_map<uint64_t, std::unordered_map<uint64_t, std::unique_ptr<MyStruct>>>>
(C++14)
给定一张地图
std::unordered_map<uint64_t, std::unordered_map<uint64_t, std::unordered_map<uint64_t, std::unique_ptr<MyStruct>>>> m;
还有一个unique_ptr
auto s = std::make_unique<MyStruct>();
您可以像这样在地图中插入它:
m[1][2][3] = std::move(s);
这是我想出的方法:
std::unordered_map<uint64_t, std::unordered_map<uint64_t, std::unordered_map<uint64_t, std::unique_ptr<MyStruct>>>> myMap;
auto ptr = std::make_unique<MyStruct>();
// Insert at 17, 18, 19:
std::unordered_map<uint64_t, std::unique_ptr<MyStruct>> tmpLevel3Map;
tmpLevel3Map.emplace(19, std::move(ptr));
std::unordered_map<uint64_t, std::unordered_map<uint64_t, std::unique_ptr<MyStruct>>> tmpLevel2Map;
tmpLevel2Map.emplace(18, std::move(tmpLevel3Map));
myMap.emplace(17, std::move(tmpLevel2Map));