std::unordered_map像这样定义一个在性能方面是否相同
unordered_map<int, std::vector<ClassA>>
Run Code Online (Sandbox Code Playgroud)
像这样?
unordered_map<int, std::unique_ptr<std::vector<ClassA>>>
Run Code Online (Sandbox Code Playgroud)
对于std::vector<ClassA>部分中,我使用std::move反正。
鉴于unordered_map从不移动/复制其节点,它们在复杂性方面应该同样快。但请记住
std::unordered_map<int, std::vector<ClassA>>
Run Code Online (Sandbox Code Playgroud)
当你想访问向量的数据时,少了一个间接:
std::unordered_map -> [node -> std::vector] -> data
Run Code Online (Sandbox Code Playgroud)
其中内部节点可能包含向量。奥托:
std::unordered_map<int, std::unique_ptr<std::vector<ClassA>>>
Run Code Online (Sandbox Code Playgroud)
结果是
std::unordered_map -> [node -> std::unique_ptr] -> std::vector -> data
Run Code Online (Sandbox Code Playgroud)
现在该节点仅包含std::unique_ptr需要实际取消引用才能到达std::vector.