【发布时间】:2019-10-29 20:42:29
【问题描述】:
vector 容器将对象保存在连续内存中。对于像向量这样的情况很容易理解。但是如果它是一个向量的向量,比如vector>,这个向量中的每个向量都可以有不同的长度。它是如何管理内存的?每次我们推入一个新向量时,它是否分配一个固定长度的向量?如果是这样,如果第一个向量在 push_back 期间变得过大,会发生什么情况。它会触发向量重新分配和复制/移动的完整向量吗?
【问题讨论】:
-
一个向量包含一个指向内存块的指针。当内存不足时,它会分配一个新的内存块。向量的向量只是指向内存块的指针的“列表”。当列表变得太短时会创建一个新的“列表”
-
FWIW,不要使用向量的向量。如果您需要一个多维结构,请实现一个包装一维向量的类并使用数学来假装它具有多个维度。
标签: c++ vector memory-management