我想知道std::vector::reserve()在以下情况下的行为:

  • 假设reserve(N)立即被多次调用。
    较早的reserve(N1)是否会加起来或被覆盖?
  • 如果较早的reserve(N1)被最新的通话覆盖,
    那么,如果最新的reserve(Nn)要求的插槽数量更少,会发生什么情况?
  • 如果我们仅拥有vector X个元素,则在声明push_back()之后,
    然后我们调用reserve(N)。请问已经push_back() XN中包含的元素?
  • 假设,如果vector具有一些X推送元素,那么现在push_back()再增加1个元素(X + 1),则该对象将不得不
    搬迁;但是我们还没有执行push_back()。什么
    如果现在调用reserve()会发生什么情况?对象会被重新放置吗
    立即地 ?如果没有,那么如何保留空间?
  • 最佳答案

    reserve()仅确保 vector 的分配内存至少足以容纳作为其参数传递的项目数。因此...

  • 传递的所有最大值中的最大值将是有效保留的最小结果容量。
  • 参见#1。
  • 是的。
  • 调用reserve()时, vector 将分配必要的内存,以存储传递给reserve()的项目数。


  • 引用实际标准:
    void reserve(size_type n)
    

    关于c++ - vector 的reserve()方法的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9304894/

    10-13 07:39