加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:33:54 所属栏目:百科 来源:网络整理
导读:我明白为 Set size of vector of vectors at run time 描述,可以声明向量的向量 vectorvectorint ref; 然后调整第一级的大小 ref.resize(i); 并推动元素在二级: ref[i].push_back(23); 但是矢量矢量如何在内存中对齐? 对于简单的矢量,它是一个容器,并且连
我明白为 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列.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读