【问题标题】:C++: the best structure for implementing Vector and Matrix classesC++:实现向量和矩阵类的最佳结构
【发布时间】:2020-06-20 14:02:17
【问题描述】:

我想在 C++ 中实现VectorMatrix 类,这样VectorMatrix 对象就可以相乘。对于它们的实现,我可以想到以下两种结构:

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

  2. 使用T**类型的数据实现模板类Matrix,然后继承模板类Vector作为Matrix,使用(列数=1)。

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

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

【问题讨论】:

  • 这两种方法都不好。矩阵应该实现为一个连续数组,即T*(或者,更简洁的,std:vector<T>)。这为您提供了连续存储,并且您的 Matrix 类处理索引计算。
  • this answer

标签: c++ matrix vector


【解决方案1】:

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

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

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

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

CodeProject

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多