C++二维数组
作者:互联网
int m(3),n(2);
int pos7[3]={1,2,3}; //正确,声明时初始化,维数要么全确定(常量),要么最高维空由初始化列表反推,但元素类型(低维)必须确定
// int pos6[m]={1,2,3}; //编译错,变量大小的对象不能被初始化,必须是常量大小
//error: variable-sized object may not be initialized
int pos5[]={1,2}; //正确,一维数组的元素类型确定(int),最高维维数不定,维数由初始化列表反推,
int pos4[][2]={{1,2},{11,12},{21,22}}; //正确,二维数组的元素类型确定(int[2]),最高维维数不定,维数由初始化列表反推
// int pos3[m][n]={{1,2},{11,12},{21,22}}; //编译错,变量大小的对象不能被初始化,必须是常量大小
//error: variable-sized object may not be initialized
int pos2[3][2]={{1,2},{11,12},{21,22}}; //声明时整体初始化
for(int i(0);i<m;i++) {
// pos2[i]={}; //编译错,C++数组不能整体赋值,只能声明时整体初始化,不像vector<int>
//error: array type 'int [2]' is not assignable
}
std::vector<std::vector<int> > arr(3,std::vector<int>(2,0));
arr[0]={1,2}; //vector<int>可以整体赋值,使用初始化值列表
for(int &iele:arr[0])std::cout<<iele<<"\t";
std::cout<<"_\n"; //1 2 _
m=5;n=4;
int** pos=new int*[m];
for(int i(0);i<m;i++){
pos[i]=new int[n];
}
for(int i(0);i<m;i++){
for(int j(0);j<n;j++){
std::cout<<pos[i][j]<<"\t";
}
std::cout<<"\n";
}
/*
0 1073741824 0 1073741824
0 1073741824 0 1073741824
0 1073741824 0 1073741824
0 1073741824 0 1073741824
0 1073741824 0 1073741824
*/
for(int i(0);i<m;i++){
for(int j(0);j<n;j++){
pos[i][j]=i*10+j;
}
}
for(int i(0);i<m;i++){
for(int j(0);j<n;j++){
std::cout<<pos[i][j]<<"\t";
}
std::cout<<"\n";
}
/*
0 1 2 3
10 11 12 13
20 21 22 23
30 31 32 33
40 41 42 43
*/
//释放动态数组
for(int i(0);i<m;i++){
delete []pos[i];
}
delete []pos;
标签:初始化,arr,21,22,int,反推,C++,二维,数组 来源: https://blog.csdn.net/HayPinF/article/details/114604294