📅  最后修改于: 2023-12-03 15:11:27.598000             🧑  作者: Mango
在 C++ 中,我们可以使用 2D 数组来表示二维矩阵。而在类中使用 2D 数组有助于增强代码的可读性和可维护性。本文将介绍如何在类中声明和使用空 2D 数组作为成员。
在类中声明二维数组的语法如下所示:
class MyClass {
private:
int arr[ROW][COL];
}
其中,ROW 和 COL 是指需要声明的数组的行数和列数。不过,在类中使用空的 2D 数组有私有和公有两种方法。
私有成员:
class MyClass {
private:
int** arr;
int row, col;
public:
MyClass(int r, int c) {
row = r;
col = c;
arr = new int*[row];
for (int i = 0; i < row; ++i) {
arr[i] = new int[col];
}
}
~MyClass() {
for (int i = 0; i < row; ++i) {
delete [] arr[i];
}
delete [] arr;
}
}
公有成员:
class MyClass {
public:
int** arr;
int row, col;
MyClass(int r, int c) {
row = r;
col = c;
arr = new int*[row];
for (int i = 0; i < row; ++i) {
arr[i] = new int[col];
}
}
~MyClass() {
for (int i = 0; i < row; ++i) {
delete [] arr[i];
}
delete [] arr;
}
}
在私有成员中,2D 数组可以保证封装性和抽象性,但只能通过类中的成员函数使用。而在公有成员中,则可以直接访问数组和其下标,但需要注意数据访问和修改的安全性。
在类中使用 2D 数组也很方便,可以使用循环来初始化和遍历数组。以下是一个使用 private 成员 2D 数组的例子:
class MyClass {
private:
int** arr;
int row, col;
public:
MyClass(int r, int c) {
row = r;
col = c;
arr = new int*[row];
for (int i = 0; i < row; ++i) {
arr[i] = new int[col];
}
initialize();
}
~MyClass() {
for (int i = 0; i < row; ++i) {
delete [] arr[i];
}
delete [] arr;
}
void initialize() {
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
arr[i][j] = i * col + j;
}
}
}
void print() {
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
std::cout << arr[i][j] << " ";
}
std::cout << std::endl;
}
}
}
int main() {
MyClass myObj(3, 4);
myObj.print();
return 0;
}
在类中使用 2D 数组能够帮助我们更方便地管理和操作二维数据。无论您是使用私有成员还是公有成员,开发人员都需要注意数据的安全性和代码的可维护性。