Поделиться через


Класс 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
Справочник по файлам заголовков