C++二维数组创建以及行列的求法

1.普通方法创建二维数组:
二维数组的声明:
对于一维数组来说,数组的大小可以省略,但对于二维数组,C++规定,在声明和初始化二维数组时,只有第一维(行数)可以省略。
合法的声明有:

int a[2][3];
int a[][3];

不合法的声明:

int a[][];
int a[2][];

二维数组的初始化:
可以在声明时初始化:

int a[2][3] = {{1,2,3},{4,5,6}};
int a[2][3] = {1,2,3,4,5,6};

也可以部分赋值:

int a[2][3] = {{1,2},{}};   //未赋值的默认为零
int a[2][3] = {0};  //初始化全部为零

但是不能先声明在全部赋值,即下面的方式是错误的:

int a[2][3];
a[2][3] = {{1,2,3},{4,5,6}};

求二维数组元素的总数计算方法为:

int number = sizeof(a)/sizeof(int);

求二维数组行数的计算方法为:

int row = (sizeof(a)/sizeof(int))/(sizeof(a[0])/sizeof(int));

求二维数组列数的计算方法为:

int column = sizeof(a[0])/sizeof(int);

2. 可以使用vector创建二维数组:
初始化方法:
方法1:

vector<vector<int>> array;

vector<int> a;
a.push_back(1);
a.push_back(2);
a.push_back(3);

vector<int> b;
b.push_back(4);
b.push_back(5);
b.push_back(6);

array.push_back(a);
array.push_back(b);

方法2:

//生成一个2*3的二维数组
vector<vector<int> > array(2);
for(int i=0;i<array.size();i++)
{
    array[i].resize(3);
}

for (int i=0;i<array.size();i++)
{
    for (int j=0;j<array[0].size();j++)
    {
        int temp;
        cin>>temp;
        array[i][j] = temp;
    }    
}   

计算vector二维数组的行:

array.size()

计算vector二维数组的列:

array[0].size()

遍历vector生成的二维数组:

void reverse_array(vector<vector<int> > array)
{
    if (array.empty())
    {
        cout<<"The array is empty!\n";
        return;
    }
    for (int i=0;i<array.size();i++)
    {
        for (int j=0;j<array[0].size();j++)
        {
            cout<<"The "<<i+1<<"-th row "<<j+1<<"-th column is "<<array[i][j]<<endl;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/wyl1813240346/article/details/81272156