标准库标头 <ratio>

来自cppreference.com
< cpp‎ | header
 
 
标准库标头
注:修订记号中的反斜杠 '/' 意味着此标头被弃用和/或被移除。
语言支持
概念
<concepts> (C++20)
诊断
<system_error> (C++11)
内存管理
<memory_resource> (C++17)  
元编程
<type_traits> (C++11)
<ratio> (C++11)
通用工具
<utility>
<tuple> (C++11)
<optional> (C++17)
<variant> (C++17)
<any> (C++17)
<expected> (C++23)
<bitset>

<charconv> (C++17)
<format> (C++20)
<bit> (C++20)

字符串
<cuchar> (C++11)

容器
<flat_set> (C++23)
<span> (C++20)
<mdspan> (C++23)

迭代器
<iterator>
范围
<ranges> (C++20)
<generator> (C++23)
算法
数值
<cfenv> (C++11)
<complex>
<numbers> (C++20)

日期时间
<chrono> (C++11)
本地化
<codecvt> (C++11/17)
输入/输出
<filesystem> (C++17)
<cstdio>
<cinttypes> (C++11)
<strstream> (C++98/)
正则表达式
<regex>
并发支持
<stop_token> (C++20)
<thread> (C++11)
<atomic> (C++11)
<stdatomic.h> (C++23)
<mutex> (C++11)
<shared_mutex> (C++14)
<condition_variable> (C++11)  
<semaphore> (C++20)
<latch> (C++20)
<barrier> (C++20)
<future> (C++11)

C 兼容
<cstdbool> (C++11/17/20)  
<ccomplex> (C++11/17/20)
<ctgmath> (C++11/17/20)

<cstdalign> (C++11/17/20)

<ciso646> (C++20 前)

 

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

表示精确的有理分数
(类模板)
算术
(C++11)
在编译时相加两个 ratio 对象
(别名模板)
在编译时相减两个 ratio 对象
(别名模板)
在编译时相乘两个 ratio 对象
(别名模板)
在编译时相除两个 ratio 对象
(别名模板)
比较
在编译时比较两个 ratio 对象的相等性
(类模板)
在编译时比较两个 ratio 对象的不相等性
(类模板)
在编译时比较两个 ratio 对象的小于关系
(类模板)
在编译时比较两个 ratio 对象的小于或等于关系
(类模板)
在编译时比较两个 ratio 对象的大于关系
(类模板)
在编译时比较两个 ratio 对象的大于或等于关系
(类模板)
常量
yocto std::ratio<1, 1000000000000000000000000>,若 std::intmax_t 能表示分母
zepto std::ratio<1, 1000000000000000000000>,若 std::intmax_t 能表示分母
atto std::ratio<1, 1000000000000000000>
femto std::ratio<1, 1000000000000000>
pico std::ratio<1, 1000000000000>
nano std::ratio<1, 1000000000>
micro std::ratio<1, 1000000>
milli std::ratio<1, 1000>
centi std::ratio<1, 100>
deci std::ratio<1, 10>
deca std::ratio<10, 1>
hecto std::ratio<100, 1>
kilo std::ratio<1000, 1>
mega std::ratio<1000000, 1>
giga std::ratio<1000000000, 1>
tera std::ratio<1000000000000, 1>
peta std::ratio<1000000000000000, 1>
exa std::ratio<1000000000000000000, 1>
zetta std::ratio<1000000000000000000000, 1>,若 std::intmax_t 能表示分子
yotta std::ratio<1000000000000000000000000, 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, 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;
 
}