编程语言
首页 > 编程语言> > C++二维数组

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