我对std::vector
的理解是,当在其末尾插入某些内容时,它具有摊销的时间复杂性。这种摊销时间复杂度的原因是,一旦向量用完了用于新元素的保留空间,它将分配(保留)新的内存空间并将现有元素复制/移动(C ++ 11)到新空间。这种理解正确吗?然后我碰到了this文章,据此我错了。文章指出
在插入和删除的双端队列中没有迭代器无效 在前端和后端,因为像矢量一样,双端队列不必移动 如果当前分配的内存,则从一个内存到另一个内存的元素 不足以存储新添加的元素。
有人可以解释我的理解是正确的还是我对文章的理解不正确?
答案 0 :(得分:4)
我认为它像错字一样简单,应该是“因为 un 像矢量”。
您对std::vector
在需要更多空间时将数据移至新分配的理解是正确的。