1. 程式人生 > >C++二維陣列建立以及行列的求法

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;
        }
    }
}