[英]shrink_to_fit() for unordered containers?
我想知道兩件事......一旦容器已裝滿並且您知道不會向其中添加任何新項目,以類似於shrink_to_fit()
的方式調整無序容器的大小是否有意義? 這可能不是您通常想要做的事情,因為我猜這些桶只是指針大小。 所以......無論如何在大多數情況下調整大小都不會贏得很多空間......或者會有嗎?
其次...那 function 會是什么rehash(<bucketcount>)
。 但是對於無序容器,是否還有一個類似於shrink_to_fit
的 function,它會移除所有空桶並相應地重新散列容器?
您想看看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());
您可以使用
my_container.rehash(0);
縮小負載系數。
例如 unordered_set ( https://en.cppreference.com/w/cpp/container/unordered_set/rehash ) 的文檔說:
設置要計數的桶數並重新散列容器,即考慮到桶總數已更改,將元素放入適當的桶中。 如果新的桶數使得負載因子大於最大負載因子(count < size() / max_load_factor()),那么新的桶數至少為size() / max_load_factor()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.