【发布时间】:2014-10-29 20:42:08
【问题描述】:
answers 和std::vector 有很多,但是std::unordered_set 呢?
我真正的问题(密切相关)是这个;如果我事先保留我知道的合理大小,那么通过在每次使用之前清除它来重用相同的无序集是否有效?
【问题讨论】:
-
我会说这将是特定于实现的。该标准仅规定
clear()擦除容器中的所有元素。 -
我认为 same argument applies as for
std::vector::reserve:bucket_count是可观察状态的一部分;允许在插入时更改它,但不允许在rehash或reserve上进行更改(据我所知,甚至在erase上)。 -
@dyp: you've lost me... "
bucket_count... not explicit allowed to change onrehashorreserve" - 后者的存在是为了允许存储桶的数量(因此bucket_count())进行修改 - 前者直接接受新数量的桶(但受size() / max_load_factor()健全性检查),后者从许多预期元素和当前max_load_factor派生它。 “明确”与否,这就是他们所做的。 -
@TonyD 嗯,我似乎很困惑。当然,在插入时明确允许更改
rehash和reserve,但不能更改clear或erase。
标签: c++ c++11 unordered-set