在 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/