我正在做一个将大量使用数学计算的项目。我也希望能够简单地更改实数的实现。假设在float,double,我自己的实现和gmplib float类型之间。
到目前为止,我有两种方式:
第一个选择似乎更优雅,但是第二个选择似乎开销更少。还有第三种更好的选择吗?我也对基本的数学函数(例如正弦,余弦,表达式)感到担心。我发现,要使切换变得容易,我应该将它们实现为模板,但是我的实现速度很慢。
我通常是C++编程的新手。我在舒适的Matlab和Mathematica环境中长大,而不必担心这些事情。
最佳答案
模板是我这样做的方式。它使易于专门化必须专门化的内容变得容易,并提供了一种适用于多种类型的重用实现的好方法。
数字类型是可以实现的,但正确的做法实际上并不简单,并且引入了一些限制(与模板相比)。
如果您想要更接近快速,准确且易于维护的内容,那么多种类型就无可救药了。如果要创建全局typedef
,最终可能会使用模板正确实现这些模板。
模板提供了您所需的所有功能,控制和灵活性,并且比发布的替代方法要快(从技术上讲,如果使用...模板,#2可能会一样快)。