2

我的类 Matrix 有两个构造函数,包括复制一个,它执行深度复制。这样的解决方案非常适合复制另一个对象的明显情况。虽然在以下情况下:

Matrix m = m1 * m2; // for earlier constructed m1 & m2

在我看来效率低下,因为我在乘法运算中创建了一个对象只是为了将其复制而不是直接分配给 m。而且矩阵可以占用非常大的内存。如何更好地处理,专业人士的普遍做法是什么?

矩阵作为二维列表动态实现,就像在稀疏矩阵的情况下一样。

PS我知道乘法的结果是本地的。但是,我仍然认为如果没有上述过多的计算,它可以以某种方式更好地处理。

4

1 回答 1

6

在 C++11 中,您可以创建一个移动构造函数,在您的情况下应该更快。我不打算解释如何这样做,因为已经有很多教程,例如:http ://thbecker.net/articles/rvalue_references/section_01.html

您也可以尝试可以很好地优化这样的代码的表达式模板,尽管语法看起来会有所不同。有关入门,请参阅 http://en.wikipedia.org/wiki/Expression_templates 。

于 2012-12-05T05:14:17.617 回答