职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1684|回复: 2

关于C++中vector* vector*int* *的含义.

[复制链接]
酷酷 发表于 2009-9-11 09:58 | 显示全部楼层 |阅读模式
vector< vector<int> > vvec;
的意思是:定义了一个vector,这个vector的element也是一个vector,那么我要问的是,对于内层的vector<int>,编译系统知道每个element的size为sizeof(int),而对于外层的,它知道element的size是什么吗???
问题的意思就是,假如对于定义一个一维数组:
int a[10];
编译系统通过int知道了size,于是可以操纵存储空间.
若定义一个二维数组,
int a[8][10];
编译系统通过定义中的第一维大小\"[10]\"知道a是一个数组,每个元素大小是10*sizeof(int),所以可以操作存储空间.
而对于vector< vector<int> >来说,外层的vector可以动态增加存储空间,那么如何知道增加一个元素需要增加多少存储空间呢?意思就是,内层的也动态,外层的也动态,内层的知道增加一个是增加sizeof(int),而外层不知道内层有多少个元素,它增加时是增加多少个sizeof(int)呢?意思就是上面例子中的二维数组中的那个\"[10]\"是从哪知道的呢?
我看的是英文原版的<<C++ Primer>>,我知道vector喝array有在run time动态增加的区别...拿array举例子是为了说明我的不解之处.我看到Page 93了,这只有道习题,并没有深入讲解vector< vector<int> >的过程是怎样的...过程是什么???
askazhi 发表于 2009-9-11 09:58 | 显示全部楼层

关于C++中vector* vector*int* *的含义.

外层增加的是若干个vector<>
就其内部实现来讲
每个vector<>里面肯定有一个指针指向它所管理的那堆元素
但其自身大小也就是sizeof(vector<>)是固定的
所以外层增元素时很清楚要申请多大的空间
dgyys 发表于 2009-9-11 09:59 | 显示全部楼层

关于C++中vector* vector*int* *的含义.

有什么难理解的啊?就是 容器的每个元素又是一个容器而已 就这么简单
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-26 17:39 , Processed in 0.140952 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表