如何封装处理矩阵的代码并使其可重用?
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++ 的可能性,那么允许我这样做的结构是什么?
下面概述了您可以采取哪些措施来实现这一目标:
- 定义一个 class 例如
MyMatrix
。 class 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.
- 这个class应该使用例如
std::vector
来保存数据(比在代码中使用原始指针更好)。
- 这个 class 应该有 public 方法来获取元数据 (n,m) 和数据。
- 这个 class 应该有一个 public 方法,例如:
InitRandom(int n, int m)
,用于将 MyMatrix
对象初始化为具有随机值的矩阵大小 n x m。
- 在你程序的另一部分你可以
#include
你的classh文件,然后实例化一个MyMatrix
对象,并使用InitRandom
做你需要的.
你可以在这里看到关于实现矩阵的讨论class:https://codereview.stackexchange.com/questions/155811/basic-matrix-class-in-c
在我的课程中,我们得到的任务总是从用随机数填充随机矩阵大小 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++ 的可能性,那么允许我这样做的结构是什么?
下面概述了您可以采取哪些措施来实现这一目标:
- 定义一个 class 例如
MyMatrix
。 class 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. - 这个class应该使用例如
std::vector
来保存数据(比在代码中使用原始指针更好)。 - 这个 class 应该有 public 方法来获取元数据 (n,m) 和数据。
- 这个 class 应该有一个 public 方法,例如:
InitRandom(int n, int m)
,用于将MyMatrix
对象初始化为具有随机值的矩阵大小 n x m。 - 在你程序的另一部分你可以
#include
你的classh文件,然后实例化一个MyMatrix
对象,并使用InitRandom
做你需要的.
你可以在这里看到关于实现矩阵的讨论class:https://codereview.stackexchange.com/questions/155811/basic-matrix-class-in-c