代码之家  ›  专栏  ›  技术社区  ›  aJ.

空向量的容量是多少?

  •  5
  • aJ.  · 技术社区  · 15 年前

    看起来像个愚蠢的问题。但是对我的评论 answer 有一个问题让我想了想。

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

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

    但标准对此没有任何说明。(我也登记了乔舒蒂的书)。

    它纯粹是特定于实现的吗?是否有STL供应商使用一些任意数字作为空向量的capcity?

    任何想法…

    4 回复  |  直到 15 年前
        1
  •  16
  •   Kirill V. Lyadvinsky    15 年前

    C++标准23.2.4.2只表示 vector::capacity

    矢量可以容纳而不需要重新分配的元素总数。

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

        2
  •  7
  •   GManNickG    15 年前

    能力可以是实施者认为正确或必要的任何东西。

    还应该注意的是,假设你知道电流是不安全的。 capacity() 不调用该函数。如果您保留了10个元素,那么实现者可以自由地分配100个元素,如果它愿意的话。或11、42(首选)或10。

        3
  •  0
  •   Donnie    15 年前

    对于快速浏览谷歌和几个随机的论坛(通常是未知的血统,所以,是的),它似乎是特定于实现的。

    几乎没有问题,因为您可以通过呼叫立即更改它 reserve .

        4
  •  -1
  •   user2054758    15 年前

    如果确定要存储的数据向量是特定于实现的,那么可以通过对向量使用resize()API来更改向量的容量。