我知道 std::vector<T>
在内部连续存储它的数据(除非它是 std::vector<bool>
)都在旧的 C++03
中标准和新的C++11
.
处理此问题并引用标准的好 stackoverflow 问题:answer , answer .
嵌套 vector 中的数据如何 std::vector <std::vector <T> >
?它是如何存储的?
如果每个内部 vector 都需要连续存储它的数据,&v[n] == &v[0] + n for all 0 <= n < v.size()
怎么可能是真的? .
用稍微不同的话来说,是否可以“简单”地访问存储在这种嵌套结构中的所有元素并按顺序(通过指针或类似方式)访问一维 vector ?
最佳答案
没有。 vector
的元素存储在动态分配的内存块中;否则,vector
的容量无法增加。 vector
对象只保存一个指向该 block 的指针。
按顺序存储元素的要求仅适用于元素本身,不适用于这些元素的任何动态分配的成员。
关于c++ - std::vector 的 std::vector 邻接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10898007/