首页 > 解决方案 > C++:实现向量和矩阵类的最佳结构

问题描述

我想在 C++ 中实现Vector和类,Matrix这样对象就可以相乘。我可以为它们的实现考虑以下两种结构:VectorMatrix

  1. Vector用数据类型实现模板类T*,然后将模板类定义Matrix为s的数组Vector

  2. Matrix用数据类型实现模板类T**,然后将模板类继承VectorMatrixwith(列数= 1)。

第一种方法的缺点是,Vector类不处理列向量和行向量,并且向量向量乘法会出现问题,而在第二种方法中,Vector将被视为具有(列数 = 1 ) 或T**.

实现这两个类的最佳方法是什么?谢谢。

标签: c++matrixvector

解决方案


我不建议使用原始指针做太多事情,以后会变得非常混乱,并且是调试的噩梦。我会使用通用向量

template<typename T>
std::vector<T>

因此,如果需要,您可以使用不同的类型。但是,如果您只处理数字,我不会过度设计它。

对于乘法,您可以使用运算符重载。您可以查看相同的现有实现,看看是否有适合您需求的东西。一个快速的谷歌研究给了我这个:

代码项目

如果您发现其他任何内容,请随时将其添加到您的问题中,这样就没有人需要重新发明轮子了。


推荐阅读