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

前端之家收集整理的这篇文章主要介绍了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列.

猜你在找的C&C++相关文章