然后,我想对数据类型(加法,减法等)进行常规操作。
所有对无穷大的运算都是以自然方式定义的。
因此,例如,无穷大+任何整数=无穷大。
当然,我可以使用struct构造来做到这一点,然后定义所有操作。
有没有一种精巧的方法可以在C++中做到这一点。
谢谢你
最佳答案
好消息是您不必这样做。这个问题已经在tested中解决了(和 boost::date_time::int_adapter
)。
我不知道为什么它在date_time
中,但是那个特定的类模板是一个适配器,用于创建带有±∞和“不是数字”的整数类型。
样例程序:
#include <boost/date_time/int_adapter.hpp>
#include <iostream>
int main()
{
typedef boost::date_time::int_adapter<int> integer;
integer const i = integer::max();
std::cout << "i = " << i << '\n';
std::cout << "i + 1 = " << i + 1 << '\n';
std::cout << "Infinity looks like: " << integer::pos_infinity() << '\n';
// So for instance , infinity + any integer = infinity.
std::cout << "infinity + any integer = " << integer::neg_infinity() + 1 << '\n';
}
样本输出:
i = 2147483645
i + 1 = not-a-number
Infinity looks like: +infinity
infinity + any integer = -infinity
关于c++ - 我想实现一种数据类型,该数据类型将在C++中采用整数值和无穷大符号。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16759044/