如何设计:矩阵的线性代数例程
How to design :: Linear Algebra Routines for a 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.determent()。但这并不能给我模块化。
那么我该怎么做呢?
另外
- 你知道减少用户必须键入matrix<int>。我可以用一个typedef吗
如果你使用这个类,你会更喜欢determent()还是一些简短形式的行列式。使用缩写形式意味着更少的键入,但这也会使代码不那么容易理解。我该如何进行此交易。
我打算看看像bltiz这样的其他线性代数类是如何做到这一点的。但我担心这对我来说太高了,无法理解他们使用的技术。你能给我一些建议吗(书籍、网站等),让我了解设计模式,以及如何在不崩溃的情况下编写大量代码。
谢谢
您可以有一个实用程序名称空间:
namespace UTILITY {
// define determinant here
}
然后您可以在本地使用:
typedef UTILITY::determinant determinant;
然后使用:
determinant(A);
相关文章:
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- c++类声明时,相同的例程,不同的成员变量类型
- C++为线程工作动态地分割例程
- 子例程,不使用 pow,并带有参数和返回
- 直接在RcppArmadillo中调用LAPACK例程
- 如何将C++子例程链接到 x86 程序集程序?
- PX 转换例程编译问题
- 成功完成TLS握手后,服务器关闭时出现错误的SSL例程:SSL3_GET_RECORD:错误的版本号
- 只允许授权代码调用库中的例程
- JNI 不满意链接错误: 动态链接库 (DLL) 初始化例程失败
- 调用子例程时类型不匹配
- 将分配给C++数组传递给 Fortran 子例程
- Android Studio 3.1.2 - 无法运行C++子例程"No implementation found for Java.lang.String..."
- Posix 线程类和启动例程 (pthread)
- OpenBLAS 只为一个例程设置线程数
- 检查并行化 BLAS 例程的结果
- 我们应该测量例程的平均执行时间还是最小执行时间?
- 试图在C 中调用Fortran子例程
- 使用工程空间在软件包中导入的线性代数库EIGEN
- 如何设计:矩阵的线性代数例程