Класс duration
Измеряет интервал времени, например одну минуту, два часа, десять миллисекунд и т. д.
Содержит duration
интервал времени, который является числом тиков за единицу времени. Например, пять минут составляет пять галок, с каждым тиком в минуту друг от друга. 42 секунды — 42 галочки, каждый из которых за секунду раздается.
Синтаксис
template <class Rep, class Period> class duration;
template <class Rep, class Period = ratio<1>> class duration;
template <class Rep, class Period1, class Period2> class duration <duration<Rep, Period1>, Period2>;
Замечания
Аргумент шаблона Rep
описывает тип, используемый для удержания числа тактов в интервале. Аргумент Period
шаблона — это экземпляр ratio
, описывающий размер интервала, который представляет каждый галок.
Участники
Конструкторы
Имя | Описание |
---|---|
duration |
Формирует объект duration . |
Функции
Имя | Описание |
---|---|
count |
Возвращает количество тактов в интервале времени. |
max |
Статическая. Возвращает максимальное допустимое значение параметра-шаблона Rep . |
min |
Статическая. Возвращает минимально допустимое значение параметра-шаблона Rep . |
zero |
Статическая. Фактически возвращает Rep(0) . |
Операторы
Имя | Описание |
---|---|
duration::operator- |
Возвращает копию duration объекта с отрицанием числа галок. |
duration::operator-- |
Уменьшает на единицу накопленный счетчик тактов. |
duration::operator-= |
Вычитает число галок указанного duration из сохраненного числа галок. |
duration::operator+ |
Возвращает *this . |
duration::operator++ |
Увеличивает на единицу накопленный счетчик тактов. |
duration::operator+= |
Добавляет число галок указанного duration в хранимое число галок. |
duration::operator= |
Назначает одну длительность другой. |
duration::operator*= |
Умножает накопленный счетчик тактов на указанное значение. |
duration::operator/= |
Делит накопленный счетчик тактов на счетчик тактов указанного объекта duration . |
duration::operator%= |
Уменьшает накопленный счетчик тактов по модулю на указанное значение. |
Не являющиеся членами
Шаблоны функций
Имя | Описание |
---|---|
abs |
Возвращает абсолютное значение duration объекта . |
ceil |
Возвращает наименьшее представление duration , которое больше или равно указанному duration . |
duration_cast |
Приведение duration объекта к указанному целевому duration типу. |
floor |
Возвращает наибольшее представлениеduration , которое меньше или равно указанному.duration |
from_stream |
Синтаксический duration анализ из заданного потока с помощью указанного формата. |
round |
Округляет указанный duration до ближайшего представления duration в целевом типе. |
Операторы
Имя | Описание |
---|---|
operator+ |
После преобразования длительности, добавляемой в их общий тип, возвращает duration значение с числом галок, равным сумме преобразованных счетчиков галок. |
operator- |
После преобразования длительности, вычитаемой в их общий тип, возвращает duration число галок, равное числу галок в RHS duration , вычитаемого из числа галок в LHS duration . |
operator* |
После преобразования длительности, умноженной на их общий тип, возвращает duration значение с числом галок, равным умножению преобразованных счетчиков галок. |
operator/ |
После преобразования длительности, разделенной на их общий тип, возвращает duration значение с числом галок, равным делении преобразованного числа галок. |
operator% |
После преобразования duration делителя в их общий тип возвращает duration значение с числом галок, равным оставшейся части деления. |
operator== |
После преобразования duration типов, сравниваемых с их общим типом, определяет, равно ли количество галок. |
operator!= |
Определите, не равно ли duration другому. |
operator< |
Определите, меньше ли одно duration значение, чем другое. |
operator<= |
Определите, duration меньше ли одно или равно другому. |
operator> |
Определите, больше ли один duration из них. |
operator>= |
Определите, duration больше ли одно или равно другому. |
operator<=> |
Сравните друг duration с другом duration . Операторы >, >=, <=, <, != синтезируются компилятором. |
operator<< |
Выводит объект в заданный duration поток. |
Псевдонимы удобных типов
Имя | Описание |
---|---|
duration::period |
Синоним параметра шаблона Period . |
duration::rep |
Синоним параметра шаблона Rep . |
Требования
Заголовок: <chrono>
Пространство имен: std::chrono
duration::count
Получает количество тактов в интервале времени.
constexpr Rep count() const;
Возвращаемое значение
Количество тактов в интервале времени.
Конструктор duration::duration
Формирует объект duration
.
1) constexpr duration() = default;
2) constexpr duration(const duration& d) = default;
3) template <class Rep2>
constexpr explicit duration(const Rep2& R);
4) template <class Rep2, class Period2>
constexpr duration(const duration<Rep2, Period2>& Dur);
Параметры
Dur
Количество тактов в периоде, указанном в Period2
.
Period2
Специализация шаблона std::ratio
для представления тактового периода в секундах.
R
Количество тактов в периоде по умолчанию.
Rep2
Арифметический тип для представления числа тактов.
Замечания
1) Конструктор по умолчанию создает объект, который неинициализирован. Инициализация значения с помощью пустых фигурных скобок инициализирует объект, представляющий интервал времени нулевых тактов.
2) Конструктор копирования делает побитовую копию d
.
3) Создает объект, представляющий интервал времени часов, R
используя период std::ratio<1>
по умолчанию. Чтобы избежать округления чисел, это ошибка, чтобы создать объект длительности из типа Rep2
представления, который можно рассматривать как тип с плавающей запятой, когда duration::rep
нельзя рассматривать как тип с плавающей запятой.
4) Создает объект, представляющий интервал времени, длина которого — интервал времени, указанный в параметре Dur
. Чтобы избежать усечения счетчиков галок, это ошибка, чтобы создать объект длительности из другого объекта длительности, тип которого является несовместимым с целевым типом.
Тип D1
длительности несовместим с другим типом D2
длительности, если D2
его нельзя рассматривать как тип с плавающей запятой и ratio_divide<D1::p eriod, D2::p eriod>::type::d en не равен 1.
Если неявно rep
преобразуется в иtreat_as_floating_point<rep>
содержит значение true или treat_as_floating_point<Rep2>
содержит значение false, второй конструктор не участвует в разрешении перегрузки.Rep2
Дополнительные сведения см. в type_traits><.
Если при преобразовании не вызывается переполнение и treat_as_floating_point<rep>
имеет значение true, либо ratio_divide<Period2, period>::den
оба равно 1 и treat_as_floating_point<Rep2>
содержат значение false, третий конструктор не участвует в разрешении перегрузки. Дополнительные сведения см. в type_traits><.
Пример. Создание duration
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
// create a duration that tracks ticks as 1/10ths of a second
duration<int, std::ratio<1, 10>> tenths{ 5 };
std::cout << tenths << '\n';
hours h{12}; // hours is a convenience duration typedef
auto h2 = 3h; // 'h' is a convenience operator. h2 is a duration<int, std::ratio<3600,1>>
std::cout << h << ":" << h2 << '\n';
return 0;
}
5ds
3h:3h
duration::max
Статический метод, который возвращает верхнюю границу значений типа параметра-шаблона Rep
.
static constexpr duration max();
Возвращаемое значение
Фактически возвращает duration(duration_values<rep>::max())
.
duration::min
Статический метод, который возвращает нижнюю границу значений типа параметра-шаблона Rep
.
static constexpr duration min();
Возвращаемое значение
Фактически возвращает duration(duration_values<rep>::min())
.
duration::operator-
Возвращает копию duration
объекта с отрицанием числа галок.
constexpr duration operator-() const;
duration::operator--
Уменьшает на единицу накопленный счетчик тактов.
1) duration& operator--();
2) duration operator--(int);
Возвращаемое значение
1) Возвращает *this
.
2) Возвращает копию *this
до уменьшения.
duration::operator%=
Уменьшает хранимый счетчик галок по модуле указанного значения.
1) duration& operator%=(const rep& Div);
2) duration& operator%=(const duration& Div);
Параметры
Div
1) Div
число галок.
2) Div
значение duration
, содержащее число галок.
Возвращаемое значение
Объект duration
после выполнения операции модуля.
duration::operator*=
Умножает накопленный счетчик тактов на указанное значение.
duration& operator*=(const rep& Mult);
Параметры
Mult
Значение типа, которое задается параметром duration::rep
.
Возвращаемое значение
Объект duration
после умножения выполняется.
duration::operator/=
Делит накопленный счетчик тактов на указанное значение.
duration& operator/=(const rep& Div);
Параметры
Div
Значение типа, которое задается параметром duration::rep
.
Возвращаемое значение
Объект duration
после завершения деления.
duration::operator+
Возвращает *this
.
constexpr duration operator+() const;
Возвращаемое значение
*this
duration::operator++
Увеличивает на единицу накопленный счетчик тактов.
1) duration& operator++();
2) duration operator++(int);
Возвращаемое значение
1) Возвращает *this
.
2) Возвращает копию *this
до увеличения.
duration::operator+=
Добавляет счетчик тактов указанного объекта duration
к накопленному счетчику тактов.
duration& operator+=(const duration& Dur);
Параметры
Dur
Объект duration
.
Возвращаемое значение
Объект duration
после добавления.
duration::operator-=
Вычитает счетчик тактов указанного объекта duration
из накопленного счетчика тактов.
duration& operator-=(const duration& Dur);
Параметры
Dur
Объект duration
.
Возвращаемое значение
Объект duration
после завершения вычитания.
duration::zero
Возвращает duration(duration_values<rep>::zero())
.
static constexpr duration zero();
duration::operator=
Назначает одну длительность другой.
duration& operator=(const duration &other) = default;
Параметры
other
Копируемый объект duration
.
Возвращаемое значение
Объект LHS duration
.
См. также
<chrono>
Удобные duration
типдефы, такие как minutes
, seconds
и многое другое
Удобные литералы в течение часов, минут и многое другое
Структура duration_values
Справочник по файлам заголовков