然后,我想对数据类型(加法,减法等)进行常规操作。
所有对无穷大的运算都是以自然方式定义的。
因此,例如,无穷大+任何整数=无穷大。

当然,我可以使用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/

10-17 02:24