0
如果我确实unordered_map.clear()
会更改max_load_factor
或max_bucket_count
?清除unordered_map时对max_load_factor和桶计数的影响
如果我确实unordered_map.clear()
会更改max_load_factor
或max_bucket_count
?清除unordered_map时对max_load_factor和桶计数的影响
否 - C++ 11标准中的表103说clear
只是删除元素,而保留empty()
为真。您可以放心地假定它不会产生其他无关的,未记录的更改。即使您已将max_load_factor
从默认值1.0更改为clear()
,也不会再进行修改。
max_bucket_count
很可能是硬编码到size_t(-1)
在大多数系统 - 可变系统内存,交换/虚拟内存等其它方法来它竞争,动态操作系统缓冲区/内存占用等原因,不能返回一个有意义的值,所以大多数程序不应该打扰它。 (它可能 - 现在或者在某种乌托邦的未来 - 对gew嵌入式系统或玩具C++ - 比如具有固定进程内存的系统具有一些含义模糊的价值,或者像使用更小(例如16位)类型的“微观”空间优化)无论如何,没有合理的理由认为清除容器会影响max_bucket_count
的值与前clear
的值不同。
以及桶数(我认为这是问的意图)?如果我使用reserve()设置大小,那么调用clear()会保留大小吗?我想答案是肯定的,只是想确保 – user2717954 2015-03-30 13:14:07
@ user2717954:同样的观察表103 *建议*桶数不会改变(FWIW,这将符合'std :: vector()' 'clear'后不会缩减内存使用量)。 – 2015-03-30 14:10:56