c++ - 如何设计:矩阵的线性代数例程

标签 c++ oop design-patterns matrix

在 C++ 中,出于教育目的,我正在构建一个线性代数包。 我的问题是如何为用户设计一个好的界面。

我有一个矩阵类可以创建为

matrix<int> A (3,3)

此类处理存储在矩阵中的数据,如何遍历它们、获取特定元素、打印矩阵等...

我有另一个线性代数类,它对矩阵进行数学计算。所以它会像这样工作

LA<int> B ;

// I have a method in LA , which gives the determinant. 

matrix<int> C = B.determinant(A);

// Just doesn't look good to me, I want to be able to do this 

matrix<int> C = determinant(A); // This seems more natural 

// Is there any way to eliminate the need to create an LA object ?

一种方法是在 A 中定义行列式并调用 A.determinant()。但这并没有给我模块化。

那我该怎么做呢?

另外

  • 你知道有什么方法可以减少用户输入 matrix 的次数吗?我可以使用 typedef 吗?
  • 如果您正在使用此类,您更喜欢 determinant() 还是一些简短形式的行列式。使用简短形式意味着更少的输入,但这也会使代码更难理解。我该如何权衡取舍。

  • 我计划研究其他线性代数类(class)(如 bltiz)如何做到这一点。但我恐怕水平太高,无法理解他们使用的技术。您能否提出任何建议(书籍、网站等),让我可以了解设计模式,以及如何在不崩溃的情况下编写大量代码。

  • 谢谢

最佳答案

你可以有一个实用程序命名空间:

namespace UTILITY {
// define determinant here
}

然后在本地你可以使用:

typedef UTILITY::determinant determinant; 

然后使用:

determinant(A);

关于c++ - 如何设计:矩阵的线性代数例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29458699/

相关文章:

PHP & MySQL : confusion following code to determine new object's properties

C++ 将结构传递给函数

java - 没有任何实现和变量的抽象类是有效的接口(interface)吗?

c++ - 如何在 C++ 中获取通过 C 回调返回的结果

events - 模拟 subview 模型与父 View 模型交互的方法?

c++ - 赢得 CE : Creating Named Shared Memory

c++ - 在内存中按顺序排列全局/静态对象

c++ - 两个数组之间的共同功能?

c++ - 在 Debug模式下运行时 VS2012 中的命令参数错误

php - 为什么无法在 PHP 中返回 self ?