代码之家  ›  专栏  ›  技术社区  ›  Rajeshwar

向量是否将每个元素复制/移动到内存用完后分配的新内存中?

c++
  •  -1
  • Rajeshwar  · 技术社区  · 7 年前

    我对 std::vector 它有一个摊余的时间复杂性,当某个东西被插入到它的末尾时。这个摊销时间复杂度的原因在于,一旦一个向量耗尽了新元素的保留空间,它将分配(保留)新的存储空间和复制/移动(C++ 11)现有元素到新的空间。这种理解正确吗?然后我遇到了 this 我错的文章。这篇文章说

    对于插入和删除,在deque中不会发生迭代器失效。 因为像向量一样,deque不需要移动 在当前分配内存的情况下,从一个内存到另一个内存的元素 不足以存储新添加的元素。

    如果我的理解是正确的,或者我没有正确理解文章,有人能解释一下吗?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Mats Petersson    7 年前

    我认为这和打字一样简单,应该是“因为 联合国 类似向量“。

    你的理解 std::vector 当需要更多空间时,将数据移动到新的分配是正确的。