📜  空 2d 数组作为类 c++ 的成员(1)

📅  最后修改于: 2023-12-03 15:11:27.598000             🧑  作者: Mango

在类中使用空 2D 数组

在 C++ 中,我们可以使用 2D 数组来表示二维矩阵。而在类中使用 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 数组

在类中使用 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 数组能够帮助我们更方便地管理和操作二维数据。无论您是使用私有成员还是公有成员,开发人员都需要注意数据的安全性和代码的可维护性。