chrono 是一个头文件名,同时也是一个子命名空间:所有在这个头文件中的内容(除了 common_type 模板特化以外)都不是直接定义在std命名空间中(像大部分标准库中内容一样),而是被定义在 std::chrono 命名空间中.
这个头文件中的元素处理有关时间的内容,这些内容主要包括三个概念:
- 时期
- 它们是时间段的量度,比如:一分钟,两小时,或是十微秒.
- 在这个库中,它们表现为duration模板类的对象,这与一个数量和一个计量单位挂钩(例如,十微秒的数量是10,而单位是微秒).
- 时间点
- 时钟
duration
template <typename Rep, typename Period = ratio<1> >
class duration;
一个duration对象提供由一个计数器(count)和一个时间单位(period)组成的时间段.
在实现中,此对象使用成员类型rep(它第一个模板参数Rep的别名)存储这一计数器(count),它可以通过成员函数count来读取.
这一计数器通过时间单位(period)来表示.单位时间的长度在编译时通过duration的第二个模板参数(Period)被集成到这一类型中,这里Period是一个分数(ratio),它以分数形式表示了每一个单位时间内流逝的秒数.
模板参数
- Rep
- 一个算术类型,或是一个模拟算术类型的类,它被用作count的类型.
- Period
- 一个分数(以ratio模板的实例化表示),它给出了每个时间单位(period)的长度.
模板实例
下列被定义(typedef)的duration模板实例也在这一命名空间(std::chrono)中:
类型 | 表示 | 时间单位(Period) |
---|
hours | 至少23位的有符号整数 | ratio<3600,1> |
minutes | 至少29位的有符号整数 | ratio<60,1> |
seconds | 至少35位的有符号整数 | ratio<1,1> |
milliseconds | 至少45位的有符号整数 | ratio<1,1000> |
microseconds | 至少55位的有符号整数 | ratio<1,1000000> (1,000,000) |
nanoseconds | 至少64位的有符号整数 | ratio<1,1000000000> (1,000,000,000) |
成员类型
下列别名是duration
的成员类型.它们被广泛用作成员函数参数和返回值的类型:
成员类型 | 定义 | 说明 |
---|
rep | 第一个模板参数(Rep) | 用作表示内部计数器对象的类型 |
period | 第二个模板参数(Period) | 一个以秒为单位,用于表示单位时间(period)长度的分数(ratio) |
函数
成员函数:
静态成员函数:
非成员函数:
运算符 | 用于duration对象的运算符(函数模板) |
---|
(未完待续)
文中如有翻译错误,欢迎批评指正,谢谢.
原文链接:http://www.cplusplus.com/reference/chrono.