C++中变量、数组和vector对象初始化的问题
最近偶然发现,vector与数组的初始化存在区别,对其原理不解,希望高人指点。环境为VS 2013。
代码一如下:
int height = 3;
int width = 4;
int area = height * width;
float cell = 1.0 / float(area);
int map[height][width];
编译结果:
error C2087: “map”: 缺少下标
error C2133: “map”: 未知的大小
代码二如下:
int height = 3;
int width = 4;
int area = height * width;
float cell = 1.0 / float(area);
vector< vector <float> > newGrid(height, vector<float>(width, cell));
编译结果:
成功
那么问题是,为什么数组不能以已经初始化的变量作为下标,而vector却能以之作为初始化参数呢?难道数组内存的分配和vector对象的内存分配不是在同一时刻进行的吗?如果不是,那么分别是在什么时候呢。
此外,注意到变量area的初始化同样直接使用了之前的变量。那是否意味着数组内存分配是在所有变量初始化之前?
希望有经验的同学指点一二。