如果有insert/remove/rehash操作,unordered_map copy/release是否包含对象?

poo*_*per 7 c++ boost stl

我想在unordered_map中存储小对象,只是想知道是否可以复制/释放包含的对象,如果有任何插入/删除/重新执行操作?我认为unordered_map使用链接列表来存储键/值对,它不需要复制/释放像vector这样的对象用于内存重新分配.

Alo*_*ave 10

C++ 11标准:§23.2.5/ 8

无序关联容器的元素被组织成桶.具有相同哈希码的密钥出现在同一个存储桶中.当元素添加到无序关联容器时,桶的数量会自动增加,因此每个桶的平均元素数量保持在一个边界之下.重新散列使迭代器无效,元素之间的顺序更改以及桶元素出现的更改,但不会使指针或对元素的引用无效.对于unordered_multiset和unordered_multimap,rehashing保留了等效元素的相对顺序.

简而言之unordered_map,
插入/擦除操作的情况下,

  • 发生重新散列时,所有迭代器都无效,但引用保持不受影响.