c++ - 如何抽象出数学软件中的整数类型

标签 c++ design-patterns template-meta-programming

我正在设计一种数学软件,其算法适用于通用整数类型,例如机器整数或 GMP 整数。为了性能,人们通常希望使用机器整数,但如果出现溢出,那么人们可能想尝试切换到 GMP;理想情况下在运行时。到目前为止,整个程序都是作为整数类型的模板编写的。随着库的增长,痛苦也在增长:

  • 编译时间和内存消耗越来越失控。
  • 编译时的错误消息用处不大。
  • 调试更痛苦。
  • 整个代码都在头文件中。

我可以想到以下解决方案。重构代码以依赖于通过编译时宏进行类型定义的固定类型。然后制作库的多个拷贝,每个整数类型一个,并在可执行文件中将它们链接在一起。缺点似乎是我需要一个库自身的接口(interface)。

简短的问题是:对于几乎整个程序都依赖于一个类型的情况,什么是设计模式?

最佳答案

GNU Multiple Precision Arithmetic Library已经

carefully designed to be as fast as possible, both for small operands and for huge operands.

换句话说,如果你使用GMP库,就可以帮你解决这些难题,省心省力!

关于c++ - 如何抽象出数学软件中的整数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14631053/

相关文章:

c++ - 通过 void* 向下转型/向上转型

javascript - 状态更改后立即在 React 中获取最新的 Redux 状态

java - 检查方法链中的最后一个 getter 是否不为空

C++ 在结构/类包装器中重载自动运算符

c++ - 静态类成员的定义内初始化的最佳替代方案? (针对 SVN 关键字)

c++ - 如何在 64 位 DLL 中查找导出函数的地址?

java - 我如何在 Java 中组合两个对象?

C++ 元编程自动创建函数?

c++ - 如何知道传递给函数的参数是 C++ 中的类、 union 还是枚举?

C++ stringstream 到 ostream 到字符串