Пространства имён
Варианты
Действия

Рациональная арифметика времени компиляции (начиная с C++11)

Материал из cppreference.com
< cpp‎ | numeric
 
 
Библиотека метапрограммирования
Свойства типов
Категории типов
(C++11)
(C++14)  
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Свойства типов
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(до C++20*)
(C++11)(устарело в C++20)
(C++11)
Константы свойств типа
Метафункции
(C++17)
Поддерживаемые операции
Запросы отношений и свойств
Модификации типов
(C++11)(C++11)(C++11)
Преобразования типов
(C++11)(устарело в C++23)
(C++11)(устарело в C++23)
(C++11)
(C++11)
(C++17)

(C++11)(до C++20*)(C++17)
Рациональная арифметика времени компиляции
Целочисленные последовательности времени компиляции
 
Рациональная арифметика времени компиляции
(C++11)
Арифметика
(C++11)
Сравнение
(C++11)
 

Шаблон класса 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. 1,0 1,1 1,2 1,3 Эти определения типов определяются только в том случае, если std::intmax_t может представлять знаменатель.
  2. 2,0 2,1 2,2 2,3 Эти определения типов определяются только в том случае, если std::intmax_t может представлять числитель.

[править] Рациональная арифметика времени компиляции

Предусмотрено несколько псевдонимов шаблонов, которые выполняют арифметические операции над объектами ratio во время компиляции.

Определены в заголовочном файле <ratio>
(C++11)
складывает два объекта ratio во время компиляции
(псевдоним шаблона) [править]
вычитает два объекта ratio во время компиляции
(псевдоним шаблона) [править]
умножает два объекта ratio во время компиляции
(псевдоним шаблона) [править]
делит два объекта ratio во время компиляции
(псевдоним шаблона) [править]

[править] Рациональное сравнение времени компиляции

Предоставляется несколько шаблонных классов, которые выполняют операции сравнения над объектами ratio во время компиляции.

Определены в заголовочном файле <ratio>
сравнивает два объекта ratio на равенство во время компиляции
(шаблон класса) [править]
сравнивает два объекта ratio на неравенство во время компиляции
(шаблон класса) [править]
сравнивает два объекта ratio на меньше чем во время компиляции
(шаблон класса) [править]
сравнивает два объекта ratio на меньше или равно во время компиляции
(шаблон класса) [править]
сравнивает два объекта ratio на больше чем во время компиляции
(шаблон класса) [править]
сравнивает два объекта ratio на больше или равно во время компиляции
(шаблон класса) [править]