以下整理自:https://www.2cto.com/kf/201404/290706.html
chrono 库主要包含了三种类型:时间间隔 Duration、时钟 Clocks 和时间点 Time point
duration:
duration 表示一段时间间隔,用来记录时间长度,可以表示几秒钟、几分钟或者几个小时的时间间隔
duration 的原型是:
template<class Rep, class Period = std::ratio<1>> class duration;
第一个模板参数Rep是一个数值类型,表示时钟个数;第二个模板参数是一个默认模板参数std::ratio,它的原型是:
template<std::intmax_t Num, std::intmax_t Denom = 1> class ratio;
它表示每个时钟周期的秒数,其中第一个模板参数 Num 代表分子,Denom 代表分母,分母默认为 1,ratio 代表的是一个分子除以分母的分数值,比如 ratio<2> 代表一个时钟周期是两秒,ratio<60> 代表了一分钟,ratio<60*60> 代表一个小时,ratio<60*60*24> 代表一天。而ratio<1, 1000> 代表的则是1/1000秒即一毫秒,ratio<1, 1000000> 代表一微秒,ratio<1, 1000000000> 代表一纳秒。标准库为了方便使用,就定义了一些常用的时间间隔,如时、分、秒、毫秒、微秒和纳秒,在chrono命名空间下,它们的定义如下:
1 typedef duration <Rep, ratio<3600,1>> hours; 2 3 typedef duration <Rep, ratio<60,1>> minutes; 4 5 typedef duration <Rep, ratio<1,1>> seconds; 6 7 typedef duration <Rep, ratio<1,1000>> milliseconds; 8 9 typedef duration <Rep, ratio<1,1000000>> microseconds; 10 11 typedef duration <Rep, ratio<1,1000000000>> nanoseconds;