首页 > 解决方案 > 向量是否将每个元素复制/移动到内存不足时分配的新内存

问题描述

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

在前端和后端插入和删除的双端队列中不会发生迭代器失效,因为与向量一样,双端队列不必将元素从一个内存转移到另一个内存,以防当前分配的内存不足以存储新添加的元素。

有人可以解释我的理解是正确的还是我没有正确理解这篇文章?

标签: c++

解决方案


我认为它就像一个错字一样简单,应该是“因为不像向量”。

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


推荐阅读