gpt4 book ai didi

c++ - c++ vector> 如何管理内存

转载 作者:行者123 更新时间:2023-11-30 00:42:41 25 4
gpt4 key购买 nike

vector 容器在连续内存中保存对象。对于vector这样的情况很容易理解。但是如果它是一个 vector 的 vector ,比如 vector>,这个 vector 的 vector 中的每个 vector 可以有不同的长度。它如何管理内存?每次我们插入一个新的 vector 时,它是否分配一个固定长度的 vector ?如果是这样,如果第一个 vector 在 push_back 期间超出大小将会发生什么。它会触发 vector 重新分配和复制/移动的完整 vector 吗?

最佳答案

vector 是指向动态数组的指针。如果你 push_back 并发现你的数组空间不足,你分配一个新的,更大的数组,复制旧数组中的所有内容,然后将新值插入。

如果您有一个 vector vector ,则每个内部 vector 也是如此。

您在这里需要了解的是 vector 的 vector (与二维数组不同)在内存中不是连续的。每个内部 vector 的数组都可以存储在内存中的任何位置。或者换句话说,“ vector vector 中的每个 vector 都是完全不同的 vector 。每个 vector 都有自己的、完全独立和单独管理的缓冲区。1


1。感谢 user4581301!

关于c++ - c++ vector<vector<int>> 如何管理内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58615132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com