【发布时间】:2020-06-20 14:02:17
【问题描述】:
我想在 C++ 中实现Vector 和Matrix 类,这样Vector 和Matrix 对象就可以相乘。对于它们的实现,我可以想到以下两种结构:
-
用
T*类型的数据实现模板类Vector,然后将模板类Matrix定义为Vectors的数组。 -
使用
T**类型的数据实现模板类Matrix,然后继承模板类Vector作为Matrix,使用(列数=1)。
第一种方法的缺点是,Vector 类不处理列向量和行向量,向量-向量乘法会有问题,而在第二种方法中,Vector 将被视为具有(列数 =1)或T** 的二维矩阵。
实现这两个类的最佳方法是什么? 谢谢。
【问题讨论】:
-
这两种方法都不好。矩阵应该实现为一个连续数组,即
T*(或者,更简洁的,std:vector<T>)。这为您提供了连续存储,并且您的Matrix类处理索引计算。