【发布时间】:2012-08-10 00:00:42
【问题描述】:
我是一名数学学生,对 C++ 很陌生,为了帮助我的学习,我想创建一个矩阵类(我不想使用库类)。我正在考虑做类似的事情
int iRows = 5;
int iColumns = 6;
double** pMatrix = new double*[iRows];
for (int i = 0; i < iRows; ++i) {
pMatrix[i] = new double[iColumns];
}
(我不确定这是否是正确的语法 - 我想在尝试之前在这里获得建议)但我在 Stackoverflow 看到不推荐使用不像 shared_ptr 的指针。使用vector<vector<double>> 是不是更好,这样我就不用担心删除内存了?我担心向量不是一个好的选择,因为长度可以用 push_back 改变,我希望矩阵的大小是固定的。我无法使用
double dMatrix[iRows][iColumns];
因为尺寸不是恒定的。什么是我使用的最佳选择?
【问题讨论】:
-
“我不想使用库类”——Eeeeet,错了。您确实想使用一个,除非是出于学习目的自己编写一个。另外,不,它不是一个很好的矩阵近似值,因为
doubles 将遍布整个内存。最好使用一维向量并自己调整索引。 -
那里有很多矩阵 API,为什么不看看他们是如何做到的。如果您只需要某些尺寸(如 3x3、4x4 等),那么您可以使用 2d 数组为每个尺寸创建一个类。
-
@Xeo 是的,这正是我想要做的——学习目的是为了更好地使用 C++ 做一些实际的事情。感谢所有建议。