如果我unordered_map.clear()
这会更改max_load_factor
或max_bucket_count
吗?
答案 0 :(得分:1)
否 - C ++ 11标准中的表103表示clear
只删除了元素,empty()
为真。您可以放心地假设它没有进行其他无关的,未记录的更改。即使您已将max_load_factor
从默认值1.0更改为clear()
,也不会再被max_bucket_count
修改。
size_t(-1)
很可能硬编码到max_bucket_count
- 可变系统内存,交换/虚拟内存等,竞争它的其他进程,动态操作系统缓冲区/内存使用等等。返回有意义的值是不切实际的,因此大多数程序都不应该为此烦恼。 (它可能 - 现在或在某些乌托邦未来 - 对gew嵌入式系统或玩具C ++有一些模糊的意义 - 就像具有固定进程内存的系统,或者"微观"空间优化,如使用更小的(例如用于索引存储桶的16位类型。)无论如何,没有合理的理由认为清除容器会影响clear
与{{1}}之前的值不同。