一旦向量耗尽,向量是否将每个元素复制/移动到分配的新存储器中

时间:2018-07-29 06:16:46

标签: c++

我对std::vector的理解是,当在其末尾插入某些内容时,它具有摊销的时间复杂性。这种摊销时间复杂度的原因是,一旦向量用完了用于新元素的保留空间,它将分配(保留)新的内存空间并将现有元素复制/移动(C ++ 11)到新空间。这种理解正确吗?然后我碰到了this文章,据此我错了。文章指出

  

在插入和删除的双端队列中没有迭代器无效   在前端和后端,因为像矢量一样,双端队列不必移动   如果当前分配的内存,则从一个内存到另一个内存的元素   不足以存储新添加的元素。

有人可以解释我的理解是正确的还是我对文章的理解不正确?

1 个答案:

答案 0 :(得分:4)

我认为它像错字一样简单,应该是“因为 un 像矢量”。

您对std::vector在需要更多空间时将数据移至新分配的理解是正确的。