看起来像个愚蠢的问题。但是对我的answer评论其中一个问题让我再次思考。
[评论说,空载体的容量不必为零]
默认情况下,我的答案是0,因为矢量中没有元素。将容量保持为0是有意义的,并且在第一次分配时可以增加容量而不会有任何性能命中。
但标准并没有说明这一点。 (我也查阅了Josuttis的书)。
这纯粹是针对具体实施的吗?是否有任何STL供应商使用一些任意数字作为空载体的capcity?
任何想法......
答案 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来更改向量的容量。