在深度 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));