空载体的容量是多少?

aJ.*_*aJ. 5 c++ stl vector

看起来像个愚蠢的问题.但是,我的评论答案的SO问题让我重新思考一个.

[评论说,空载体的容量不必为零]

默认情况下,我的答案是0,因为矢量中没有元素.将容量保持为0是有意义的,并且在第一次分配时可以增加容量而不会有任何性能命中.

但标准并没有说明这一点.(我也查阅了Josuttis的书).

它纯粹是针对具体实现的吗?是否有任何STL供应商使用一些任意数字作为空载体的capcity?

有什么想法吗...

Kir*_*sky 16

C++标准23.2.4.2只说vector::capacity

向量可以容纳的元素总数,无需重新分配.

这意味着实际值是完全特定于实现的.


GMa*_*ckG 7

容量可以是实现者认为正确或必要的任何东西.

还应该注意,假设你在capacity()没有调用该函数的情况下知道当前的情况,从来没有"安全" .如果您保留10个元素,则实现者可以自由地分配100个元素.或11,42(首选)或仅10.

  • 确实.GNU STL的容量为0. Java API规范称它的容量为10.它实际上是一个实现细节. (2认同)