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

“调整大小”是否会有降低病媒容量的风险?

  •  1
  • Remi.b  · 技术社区  · 6 年前

    在C++中,方法 resize (共个) std::vector ),更改向量的大小(并在必要时构造/销毁对象), reserve 允许最终增加向量的容量。 shrink_to_fit 将减少向量的容量以匹配其大小。增加向量大小时(通过 调整大小 ,则, push_back insert ),容量将在需要时增加(如果我没有弄错的话,每次需要增加时,容量都会加倍)。

    标准是否确保向量永远不会减少其容量,除非函数 收缩到适合 是否调用?或者,向量容量是否可能根据编译器认为明智的做法而有所不同?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Justin    6 年前

    不,矢量的容量不会减少 reserve resize

    std::vector::reserve :

    如果 new_cap 是[不大于 capacity ]。。。没有无效的迭代器或引用。

    std::vector::resize

    当调整到更小的大小时,向量容量永远不会减少,因为这会使所有迭代器失效,而不仅仅是那些会被等效的pop\u back()调用序列失效的迭代器。

    Relevant part of the standard