如何封装处理矩阵的代码并使其可重用?

How can I encapsulate code dealing with matrices and make it reusable?

在我的课程中,我们得到的任务总是从用随机数填充随机矩阵大小 nxm 开始。

我想创建(一个库?,一个 class?)一些结构,所以比任何时候我想生成一个矩阵 A 我只需要输入所需尺寸 nxm.

换句话说,将所有代码更改为 #include <myrandommatrixgenerator>

int n, m;

cout << "Enter number of rows (n): ";
cin >> n;
cout << "Enter number of columns (m): ";
cin >> m;

//matrix b with random numbers
srand(time(NULL));

int max = 9, min = -9;

int *b = new int[n*m];
for (int i = 0; i<n; i++)
{
    for (int j = 0; j<m; j++)
    {
        b[i*m + j] = min + ((rand() % max) + 1);
    }
}

//print matrix b
cout << "\nMatrix b:" << endl;

for (int i = 0; i<n; i++)
{
    for (int j = 0; j<m; j++)
    {
        cout << setw(5) << b[i*m + j];
    }
    cout << endl;
}

我没有全面了解 C++ 的可能性,那么允许我这样做的结构是什么?

下面概述了您可以采取哪些措施来实现这一目标:

  1. 定义一个 class 例如MyMatrixclass can encapsulate data and operations related to it. The class can be placed in separate files (h and cpp). A friendly guide: C++ Classes and Objects - w3schooles.
  2. 这个class应该使用例如std::vector 来保存数据(比在代码中使用原始指针更好)。
  3. 这个 class 应该有 public 方法来获取元数据 (n,m) 和数据。
  4. 这个 class 应该有一个 public 方法,例如:InitRandom(int n, int m),用于将 MyMatrix 对象初始化为具有随机值的矩阵大小 n x m。
  5. 在你程序的另一部分你可以#include你的classh文件,然后实例化一个MyMatrix对象,并使用InitRandom做你需要的.

你可以在这里看到关于实现矩阵的讨论class:https://codereview.stackexchange.com/questions/155811/basic-matrix-class-in-c