Рациональная арифметика времени компиляции (начиная с C++11)
Материал из cppreference.com
Шаблон класса std::ratio
и связанные с ним шаблоны обеспечивают поддержку рациональной арифметики во время компиляции. Каждый экземпляр этого шаблона точно представляет любое конечное рациональное число.
[править] Фракции времени компиляции
Определены в заголовочном файле
<ratio> | |
(C++11) |
представляет точную рациональную дробь (шаблон класса) |
Следующие удобные определения типов, соответствующие соотношениям SI, предоставляются стандартной библиотекой:
Определены в заголовочном файле
<ratio> | |
Тип | Определение |
quecto (начиная с C++26)
|
std::ratio<1, 1000000000000000000000000000000> (10-30)[1]
|
ronto (начиная с C++26)
|
std::ratio<1, 1000000000000000000000000000> (10-27)[1]
|
yocto
|
std::ratio<1, 1000000000000000000000000> (10-24)[1]
|
zepto
|
std::ratio<1, 1000000000000000000000> (10-21)[1]
|
atto
|
std::ratio<1, 1000000000000000000> (10-18)
|
femto
|
std::ratio<1, 1000000000000000> (10-15)
|
pico
|
std::ratio<1, 1000000000000> (10-12)
|
nano
|
std::ratio<1, 1000000000> (10-9)
|
micro
|
std::ratio<1, 1000000> (10-6)
|
milli
|
std::ratio<1, 1000> (10-3)
|
centi
|
std::ratio<1, 100> (10-2)
|
deci
|
std::ratio<1, 10> (10-1)
|
deca
|
std::ratio<10, 1> (101)
|
hecto
|
std::ratio<100, 1> (102)
|
kilo
|
std::ratio<1000, 1> (103)
|
mega
|
std::ratio<1000000, 1> (106)
|
giga
|
std::ratio<1000000000, 1> (109)
|
tera
|
std::ratio<1000000000000, 1> (1012)
|
peta
|
std::ratio<1000000000000000, 1> (1015)
|
exa
|
std::ratio<1000000000000000000, 1> (1018)
|
zetta
|
std::ratio<1000000000000000000000, 1> (1021)[2]
|
yotta
|
std::ratio<1000000000000000000000000, 1> (1024)[2]
|
ronna (начиная с C++26)
|
std::ratio<1000000000000000000000000000, 1> (1027)[2]
|
quetta (начиная с C++26)
|
std::ratio<1000000000000000000000000000000, 1> (1030)[2]
|
- ↑ 1,0 1,1 1,2 1,3 Эти определения типов определяются только в том случае, если std::intmax_t может представлять знаменатель.
- ↑ 2,0 2,1 2,2 2,3 Эти определения типов определяются только в том случае, если std::intmax_t может представлять числитель.
[править] Рациональная арифметика времени компиляции
Предусмотрено несколько псевдонимов шаблонов, которые выполняют арифметические операции над объектами ratio
во время компиляции.
Определены в заголовочном файле
<ratio> | |
(C++11) |
складывает два объекта ratio во время компиляции (псевдоним шаблона) |
(C++11) |
вычитает два объекта ratio во время компиляции (псевдоним шаблона) |
(C++11) |
умножает два объекта ratio во время компиляции (псевдоним шаблона) |
(C++11) |
делит два объекта ratio во время компиляции (псевдоним шаблона) |
[править] Рациональное сравнение времени компиляции
Предоставляется несколько шаблонных классов, которые выполняют операции сравнения над объектами ratio
во время компиляции.
Определены в заголовочном файле
<ratio> | |
(C++11) |
сравнивает два объекта ratio на равенство во время компиляции (шаблон класса) |
(C++11) |
сравнивает два объекта ratio на неравенство во время компиляции (шаблон класса) |
(C++11) |
сравнивает два объекта ratio на меньше чем во время компиляции (шаблон класса) |
(C++11) |
сравнивает два объекта ratio на меньше или равно во время компиляции (шаблон класса) |
(C++11) |
сравнивает два объекта ratio на больше чем во время компиляции (шаблон класса) |
(C++11) |
сравнивает два объекта ratio на больше или равно во время компиляции (шаблон класса) |