空载体的容量是多少?

时间:2009-11-24 05:21:26

标签: c++ stl vector

看起来像个愚蠢的问题。但是对我的answer评论其中一个问题让我再次思考。

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

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

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

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

任何想法......

4 个答案:

答案 0 :(得分:16)

C ++标准版23.2.4.2仅表示vector::capacity

  

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

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

答案 1 :(得分:7)

容量可以是实现者认为正确或必要的任何内容。

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

答案 2 :(得分:0)

对于Google的快速扫描以及一些随机论坛(通常不为人知的谱系,所以,是的)反弹,它似乎是特定于实现的。

几乎不是问题,因为您可以通过调用reserve立即更改它。

答案 3 :(得分:-1)

如果确定要存储哪些数据向量并且是特定于实现的,则可以通过在向量上使用resize()API来更改向量的容量。