操作 | 结果 |
---|---|
duration d | Default 构造函数;建立一个 duration(default-initialized) |
duration d(d2) | Copy 构造函数;复制一个 duration(d2可能拥有不同的单位类型) |
duration d(val) | 以 d 的单位类型建立一个 duration,拥有 val tick |
d = d2 | 将 duration d2 赋值给 d (可存在隐式转换) |
d.count() | 返回 duration d 的 tick 数量 |
duration_cast<D >(d) | 返回的是 “duration d 显式转换为类型 D” 的结果 |
duration::zero() | 获得长度为0的 duration |
duration::max() | 获得此类型之最大可能的 duration |
duration::min() | 获得些类型之最小可能的 duration |
duration::rep | 获得 tick 的数量 |
duration::period | 获得单位类型(unit type)的类型 |
测试程序
#include <iostream>
#include <chrono>
using std::cout;
using std::endl;
int main(){
typedef std::chrono::duration<int> seconds_type;
typedef std::chrono::duration<int, std::milli> milliseconds_type;
typedef std::chrono::duration<int, std::ratio<60 * 60>> hours_type;
hours_type h_oneday(24); // 24h
seconds_type s_oneday(60 * 60 * 24); // 86400s
milliseconds_type ms_oneday(s_oneday); // 86400000ms
seconds_type s_onehour(60 * 60); // 3600s
//hours_type h_onehour (s_onehour); // NOT VALID (type truncates), use:
hours_type h_onehour(std::chrono::duration_cast<hours_type>(s_onehour));
milliseconds_type ms_onehour(s_onehour); // 3600000ms (ok, no type truncation)
cout << ms_onehour.count() << "ms in 1h" << endl;
return 0;
}
输出结果: