gpt4 book ai didi

c++ - 如何在 C++ 中轻松切换算术?

转载 作者:行者123 更新时间:2023-11-30 00:57:00 25 4
gpt4 key购买 nike

我正在制作一个将大量使用数学计算的项目。此外,我希望能够简单地更改实数的实现。比方说在 float、double、我自己的实现和 gmplib float 类型之间。

目前我想到了两种方式:

  1. 我创建了一个类“Number”,它将与程序的其余部分交互。

  2. 我对算术类型进行了类型定义,并编写了全局函数来与程序的其余部分进行交互。

第一个选择似乎更优雅,但第二个似乎开销较小。还有第三种更好的选择吗?我还担心正弦、余弦、exp 等基本数学函数……我发现要使切换变得容易,我应该将它们实现为模板,但我的实现速度慢得无可救药。

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

最佳答案

您需要使用带有约束的模板以避免重新实现。

例如,假设您想在程序中以不同的方式使用 sin 来表示 floatdouble。您可以根据类型重载并创建专门的模板。

template<class T> T MySin(const T& f) {
return genericSin(f);
}

template<> float MySin<float>(float f) {
return sinf(f);
}

template<> double MySin<double>(double d) {
return sin(d);
}

对于函数。如果您想走 OO 路线,则在部分专门化 Math 类时语法类似。这将使您能够调用任何类型的例程,并调用最专业和最有效的例程。

关于c++ - 如何在 C++ 中轻松切换算术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9173204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com