C++ clear()是否影响std::unordered_集的存储桶计数?

C++ clear()是否影响std::unordered_集的存储桶计数?,c++,c++11,unordered-set,C++,C++11,Unordered Set,有大量的withstd::vector,但是std::unordered\u set呢 我真正的问题(密切相关)是:;如果我事先将我知道的合理大小保留下来,通过在每次使用前清除相同的无序集来重用它是否有效?正式答案是:这取决于实现 非正式的回答是:unordered\u set内部有一个bucket数组(某种类型),而且实现很可能与vector一致,因此调用clear()时不会删除此数组。因此调用clear()很可能会带来一些好处。我认为这是特定于实现的。标准只规定clear()擦除容器中的所有

有大量的with
std::vector
,但是
std::unordered\u set


我真正的问题(密切相关)是:;如果我事先将我知道的合理大小保留下来,通过在每次使用前清除相同的无序集来重用它是否有效?

正式答案是:这取决于实现


非正式的回答是:
unordered\u set
内部有一个bucket数组(某种类型),而且实现很可能与
vector
一致,因此调用
clear()
时不会删除此数组。因此调用
clear()
很可能会带来一些好处。

我认为这是特定于实现的。标准只规定
clear()
擦除容器中的所有元素。我认为:
bucket\u count
是可观察状态的一部分;它可以在插入时更改,但在
rehash
reserve
时(甚至在
erase
上,据我所知…)不允许显式更改。@dyp:你把我弄丢了。。。“
bucket\u count
…不允许在
rehash
reserve
时明确更改”-后者允许修改bucket的数量(因此
bucket\u count()
)-前者直接接受新的bucket数量(但需要进行
size()/max\u load\u factor()
健全性检查)后者是从许多预期元素和当前的
max\u load\u factor
得出的。“显式”或“不显式”是他们做的事情。@TonyD-Hmm似乎我很困惑。当然,它被明确允许在插入时进行更改,
rehash
reserve
,但不能
clear
erase
。谢谢,就像乔纳森·波特的回答一样;很高兴知道没有具体说明。在每次使用之前使用
reserve
,不管怎样,性能已经有所提高。