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,其计时周期计数等于从 LHS duration 中的计时周期数减去的 RHS 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) 构造一个对象,该对象表示使用 std::ratio<1> 的默认时间段的 R 时钟计时周期时间间隔。 若要避免计时周期计数化整,从表示类型 Rep2(该类型在 duration::rep 不能作为浮点类型时可被视为浮点类型)构造持续时间对象这一做法是错误的。

4) 构造一个对象,该对象表示时间间隔,其长度是由 Dur 指定的时间间隔。 若要避免计时周期计数截断,从另一个其类型与目标类型之间为不可公度的持续时间对象构造一个持续时间对象这一做法是错误的。

如果不能将 D2 视为浮点类型且 ratio_divide<D1::period, D2::period>::type::den 不是 1,持续时间类型 D1 与其他持续时间类型 D2不可公度

除非 Rep2 可隐式转换为 reptreat_as_floating_point<rep>为 truetreat_as_floating_point<Rep2>为 false,否则第二个构造函数将不参与重载决策。 有关详细信息,请参阅 <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 typedefs,例如 minutesseconds 等等
小时、分钟等的便利文本
duration_values 结构
头文件引用