簡體   English   中英

用於無序容器的 shrink_to_fit()?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM