我正在做一个将大量使用数学计算的项目。我也希望能够简单地更改实数的实现。假设在float,double,我自己的实现和gmplib float类型之间。

到目前为止,我有两种方式:

  • 我创建一个“Number”类,它将与程序的其余部分进行交互。
  • 我定义了算术类型并编写了全局函数以与程序的其余部分接口(interface)。

  • 第一个选择似乎更优雅,但是第二个选择似乎开销更少。还有第三种更好的选择吗?我也对基本的数学函数(例如正弦,余弦,表达式)感到担心。我发现,要使切换变得容易,我应该将它们实现为模板,但是我的实现速度很慢。

    我通常是C++编程的新手。我在舒适的Matlab和Mathematica环境中长大,而不必担心这些事情。

    最佳答案

    模板是我这样做的方式。它使易于专门化必须专门化的内容变得容易,并提供了一种适用于多种类型的重用实现的好方法。

    数字类型是可以实现的,但正确的做法实际上并不简单,并且引入了一些限制(与模板相比)。

    如果您想要更接近快速,准确且易于维护的内容,那么多种类型就无可救药了。如果要创建全局typedef,最终可能会使用模板正确实现这些模板。

    模板提供了您所需的所有功能,控制和灵活性,并且比发布的替代方法要快(从技术上讲,如果使用...模板,#2可能会一样快)。

    10-04 22:23