定义一个 std::unordered_map
在性能方面是否相同?像这样
unordered_map<int, std::vector<ClassA>>
像这样?
unordered_map<int, std::unique_ptr<std::vector<ClassA>>>
对于 std::vector<ClassA>
部分,我正在使用 std::move
无论如何。
最佳答案
鉴于 unordered_map
从不移动/复制其节点,它们在复杂性方面应该同样快。但请记住
std::unordered_map<int, std::vector<ClassA>>
当你想访问 vector 的数据时少了一个间接:
std::unordered_map -> [node -> std::vector] -> data
内部节点可能包含 vector 。奥托:
std::unordered_map<int, std::unique_ptr<std::vector<ClassA>>>
结果
std::unordered_map -> [node -> std::unique_ptr] -> std::vector -> data
现在节点仅包含 std::unique_ptr
,需要实际取消引用才能到达 std::vector
。
关于c++ - 定义 vector 的 unordered_map 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21072701/