C++怎样使用变量定义二维数组??
来源:百度知道 编辑:UC知道 时间:2024/05/09 16:12:25
float tt[a][b]肯定是错的
请问该怎么定义啊
好像用new语句可以 具体怎么弄啊??
float **tt = new float*[a];
for (int i=0; i<a; ++i) tt[i] = new float[b];
to goldenhawking : 这样内存确实不是连续的,不过一般都无所谓。 下标当然可以是变量,要不还费这个劲干啥。 至于你说的前一个方法算不上是二维数组, 后一个方法也不是连续内存,而且这么用vector麻烦很多
to wwww998888 : 这种变长数组是比较新的语法特性,多数编译器根本不支持。
楼上的方法分配的数组和静态的 float tt[a][b]的内存排布不一致,且数组下标无法为变量
正确方法:
cin<<a<<b;
size_t nSize = a*b*sizeof(float);
char * pBuf = new char [nSize];
float * pF = (float *) pBuf;
而后通过
pF[i*a+j]访问元素。
动态二维数组需要类模拟.
可以使用vector类型嵌套,或者使用map,提供几种结构
std::map<T1,std::vector<T2>>,好处,比如
std::map<std::string,std::vector<float>> m_array;
可以用
m_array["Hello"][4] = 5.5;
来访问。
需要注意的是,这样访问前要注意向vector插入空元素。
1.定义m*m的数组。
int m,**p;
p=new int*[m];
2.定义n*m的数组
int n;
int (*p)[2] = new int [n][2];
//此处的2不能是变量
3.定义n*m的二维数组
float **tt = new float*