我想知道两件事..。一旦容器被填充,以类似于shrink_to_fit()的方式调整无序容器的大小是否有意义,并且您知道不会有任何新的项添加到其中?也许这不是你通常想要做的事情,因为我想桶只是关于指针大小的。所以..。无论如何,在大多数情况下,在调整大小方面不会有太多的空间。还是会在那里?
其次..。rehash(<bucketcount>)的功能是什么呢?但是,对于无序容器是否也有类似于shrink_to_fit的函数,这些容器可以删除所有空桶并相应地重新散列容器?
发布于 2015-09-25 15:36:19
你想看看load_factor。
只有
void max_load_factor( float ml );而不是min_load_factor,所以你不能得到你想要的东西,除非把元素移动到一个新的容器中。
decltype(orig) shrunk(std::make_move_iterator(orig.begin()),
std::make_move_iterator(orig.end());发布于 2022-04-28 13:45:29
您可以使用
my_container.rehash(0);以缩小负载系数。
例如,unordered_set (set/rehash)的文档说:
设置要计数和重新散列容器的桶数,即考虑到总的桶数已经更改,将元素放入适当的桶中。如果新的桶数使负载因子大于最大负载因子(count < size() / max_load_factor()),那么新的桶数至少是size() / max_load_factor()。
https://stackoverflow.com/questions/32785559
复制相似问题