c++ - 将大对象存储在 unordered_map 中是否效率低下?
问题描述
例如,如果您有 unordered_map 并添加项目,当 unordered_map 进行重新散列时,它实际上是在移动 BigObject 数据还是只是在内部移动指针?使用 unordered_map< int, shared_ptr > 会更好吗?
解决方案
每个元素都存储在自己的节点中,因此添加/删除元素不会移动现有元素。
你怎么知道?只需粗略看一下公共接口,特别注意方法.extract()
和.merge()
. 改变元素数量的其他人并不那么明显。