2014-10-08 71 views

回答

1

否 - C++ 11标准中的表103说clear只是删除元素,而保留empty()为真。您可以放心地假定它不会产生其他无关的,未记录的更改。即使您已将max_load_factor从默认值1.0更改为clear(),也不会再进行修改。

max_bucket_count很可能是硬编码到size_t(-1)在大多数系统 - 可变系统内存,交换/虚拟内存等其它方法来它竞争,动态操作系统缓冲区/内存占用等原因,不能返回一个有意义的值,所以大多数程序不应该打扰它。 (它可能 - 现在或者在某种乌托邦的未来 - 对gew嵌入式系统或玩具C++ - 比如具有固定进程内存的系统具有一些含义模糊的价值,或者像使用更小(例如16位)类型的“微观”空间优化)无论如何,没有合理的理由认为清除容器会影响max_bucket_count的值与前clear的值不同。

+0

以及桶数(我认为这是问的意图)?如果我使用reserve()设置大小,那么调用clear()会保留大小吗?我想答案是肯定的,只是想确保 – user2717954 2015-03-30 13:14:07

+1

@ user2717954:同样的观察表103 *建议*桶数不会改变(FWIW,这将符合'std :: vector()' 'clear'后不会缩减内存使用量)。 – 2015-03-30 14:10:56