标准库标头 <ratio>

来自cppreference.com
< cpp‎ | header


 
 
标准库头
 

此头文件是编译时有理数算术库的一部分。

(C++11)
表示精确的有理分数
(类模板)
算术
(C++11)
在编译时相加两个 ratio 对象
(别名模板)
在编译时相减两个 ratio 对象
(别名模板)
在编译时相乘两个 ratio 对象
(别名模板)
在编译时相除两个 ratio 对象
(别名模板)
比较
在编译时比较两个 ratio 对象的相等性
(类模板)
在编译时比较两个 ratio 对象的不相等性
(类模板)
在编译时比较两个 ratio 对象的小于关系
(类模板)
在编译时比较两个 ratio 对象的小于或等于关系
(类模板)
在编译时比较两个 ratio 对象的大于关系
(类模板)
在编译时比较两个 ratio 对象的大于或等于关系
(类模板)
类型别名
quecto (C++26)std::ratio<1, 1000000000000000000000000000000>,若 std::intmax_t 能表示分母
ronto (C++26)std::ratio<1, 1000000000000000000000000000>,若 std::intmax_t 能表示分母
yoctostd::ratio<1, 1000000000000000000000000>,若 std::intmax_t 能表示分母
zeptostd::ratio<1, 1000000000000000000000>,若 std::intmax_t 能表示分母
attostd::ratio<1, 1000000000000000000>
femtostd::ratio<1, 1000000000000000>
picostd::ratio<1, 1000000000000>
nanostd::ratio<1, 1000000000>
microstd::ratio<1, 1000000>
millistd::ratio<1, 1000>
centistd::ratio<1, 100>
decistd::ratio<1, 10>
decastd::ratio<10, 1>
hectostd::ratio<100, 1>
kilostd::ratio<1000, 1>
megastd::ratio<1000000, 1>
gigastd::ratio<1000000000, 1>
terastd::ratio<1000000000000, 1>
petastd::ratio<1000000000000000, 1>
exastd::ratio<1000000000000000000, 1>
zettastd::ratio<1000000000000000000000, 1>,若 std::intmax_t 能表示分子
yottastd::ratio<1000000000000000000000000, 1>,若 std::intmax_t 能表示分子
ronna (C++26)std::ratio<1000000000000000000000000000, 1>,若 std::intmax_t 能表示分子
quetta (C++26)std::ratio<1000000000000000000000000000000, 1>,若 std::intmax_t 能表示分子

概要

namespace std {
    // 类模板 ratio
    template <intmax_t N, intmax_t D = 1>
    class ratio {
    public:
        typedef ratio<num, den> type;
        static constexpr intmax_t num;
        static constexpr intmax_t den;
    };
 
    // ratio 算术
    template <class R1, class   R2> using   ratio_add      = /*ratio*/;
    template <class R1, class   R2> using   ratio_subtract = /*ratio*/;
    template <class R1, class   R2> using   ratio_multiply = /*ratio*/;
    template <class R1, class   R2> using   ratio_divide   = /*ratio*/;
 
    // ratio 比较
    template <class R1, class R2> struct ratio_equal;           
    template <class R1, class R2> struct ratio_not_equal;           
    template <class R1, class R2> struct ratio_less;      
    template <class R1, class R2> struct ratio_less_equal;          
    template <class R1, class R2> struct ratio_greater;         
    template <class R1, class R2> struct ratio_greater_equal;  
 
    // 便利 SI typedef
    typedef ratio<1, 1000000000000000000000000000000> quecto;
    typedef ratio<1,    1000000000000000000000000000> ronto;         
    typedef ratio<1,       1000000000000000000000000> yocto;
    typedef ratio<1,          1000000000000000000000> zepto;
    typedef ratio<1,             1000000000000000000> atto;   
    typedef ratio<1,                1000000000000000> femto;  
    typedef ratio<1,                   1000000000000> pico;   
    typedef ratio<1,                      1000000000> nano;   
    typedef ratio<1,                         1000000> micro;  
    typedef ratio<1,                            1000> milli;  
    typedef ratio<1,                             100> centi;  
    typedef ratio<1,                              10> deci;   
    typedef ratio<                             10, 1> deca;   
    typedef ratio<                            100, 1> hecto;  
    typedef ratio<                           1000, 1> kilo;   
    typedef ratio<                        1000000, 1> mega;   
    typedef ratio<                     1000000000, 1> giga;   
    typedef ratio<                  1000000000000, 1> tera;   
    typedef ratio<               1000000000000000, 1> peta;   
    typedef ratio<            1000000000000000000, 1> exa;    
    typedef ratio<         1000000000000000000000, 1> zetta;
    typedef ratio<      1000000000000000000000000, 1> yotta;
    typedef ratio<   1000000000000000000000000000, 1> ronna;
    typedef ratio<1000000000000000000000000000000, 1> quetta;
}