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
可隐式转换为 rep
且 treat_as_floating_point<rep>
为 true 或 treat_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,例如 minutes
、seconds
等等
小时、分钟等的便利文本
duration_values
结构
头文件引用