c++ - 定义 vector 的 unordered_map 的最佳方法

标签 c++ c++11 vector

定义一个 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/

相关文章:

c++ - 如何通过结构体中的变量确定结构体是否存在于结构体​​ vector 中

c++ - 避免在 c++ vector 或 valarray 中初始化

c++ - 循环 C++ header 包括

c++ - 英特尔 C++ 编译器是否优化了代码中从未调用过的函数?

c++ - 在C++/Eclipse中编译Tensorflow时遇到问题

java - CardLayout性能?

c++ - 在运行时按路径加载共享库

c++ - 如何修复隐式转换警告?

c++ - 为什么 std::tie 没有标记为 C++14 的 constexpr?

c++ - 模板化转换运算符的指导声明