c++ - std::vector 的 std::vector 邻接

标签 c++ vector stdvector

我知道 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/

相关文章:

c++ - 匹配的旋律

c++ - 使用外部库编译

vector - 检查 Vec 是否包含来自另一个 Vec 的所有元素

c++ - 水平连接 std::vector 的正确方法是什么?

c++ - 您将如何管理结构的 std::vector 和 std::vectors 在两个维度上都具有大范围的大小?

c++ - 需要向三维数组中插入1-100的随机数

java - 是 equals() 和 toHashCode 影响 vector add() remove() 方法的行为

使用向量而不是 R 中的正则表达式从字符串中删除多个单词

c++ - 关于在系统中表示路径的数据结构的建议

c++ - 如何正确地释放指向对的指针列表?