chrono学习笔记

来源:互联网 发布:期货数据网 编辑:程序博客网 时间:2024/05/22 17:17

chrono 是一个头文件名,同时也是一个子命名空间:所有在这个头文件中的内容(除了 common_type 模板特化以外)都不是直接定义在std命名空间中(像大部分标准库中内容一样),而是被定义在 std::chrono 命名空间中.
这个头文件中的元素处理有关时间的内容,这些内容主要包括三个概念:

  • 时期
    • 它们是时间段的量度,比如:一分钟,两小时,或是十微秒.
    • 在这个库中,它们表现为duration模板类的对象,这与一个数量和一个计量单位挂钩(例如,十微秒的数量是10,而单位是微秒).
  • 时间点
    • 对一个特定时间点的引用,比如,一个人的生日,今天的黄昏,或下一班火车到达的时刻.
    • 在这个库中,模板类time_point的对象使用关系到一个epoch(一个在所有使用同一时钟的time_point对象中共享的时间点)的duration对象提供这一关系.
  • 时钟
    • 一个涉及将时间点转换为物理时间的框架.
    • 这个库提供了至少三个将当前时间解释为time_point的工具:system_clock,steady_clock和high_resolution_clock.

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对象(公有,成员) (析构函数) 销毁这一对象(公有,成员) count 获取计数器(公有,成员)

静态成员函数:

zero 将其值清零(公有,静态,成员) min 最小值(公有,静态,成员) max 最大值(公有,静态,成员)

非成员函数:

运算符 用于duration对象的运算符(函数模板)

(未完待续)


文中如有翻译错误,欢迎批评指正,谢谢.

原文链接:http://www.cplusplus.com/reference/chrono.

0 0