微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 矢量向量在内存中如何对齐?

我明白为 Set size of vector of vectors at run time
描述,可以声明向量的向量
vector<vector<int> > ref;

然后调整第一级的大小

ref.resize(i);

并推动元素在二级:

ref[i].push_back(23);

但是矢量矢量如何在内存中对齐?

对于简单的矢量,它是一个容器,并且连续对齐它的元素,像一个数组;但在矢量矢量的情况下,我看不到图片.

由于每个内向量的大小(向量向量中的向量)大小可能改变,向量的外向量(向量向量中的向量)是否连续对齐内向量?外向量是否研究每个内向量的复制空间?如果一个矢量超调怎么办?

解决方法

向量的大小< int>存储在ref中的struct是常量.通常的实现方式有三个指针,或32位体系结构的大约12个字节,或闪存的新64位架构上的24个字节.

所以ref管理大致ref.capacity()* 12个字节的连续存储.

每个元素/向量< int>在ref中独立于元素ref管理自己的整数.为了简单起见,在ref.size()== ref.capacity()中的艺术渲染中.

所以你的

ref.resize(i);

只影响顶行.你的

ref[i].push_back(23);

只影响第i列.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐