标签:ati 间隔 意义 函数 ide 物理 时间间隔 target 增加
chrono头文件是C++中用于解决关于时间问题的头文件,他主要由三个概念来实现。
时钟是将时间点和物理上的时间关联起来的框架。在这个库文件里,提供了3个时钟。分别是系统时钟(system_clock),稳定时钟(steady_clock)和高精度时钟( high_resolution_clock) 。
通过这个类可以获取现在的系统时间,他有以下三个静态函数
chrono::system_clock::now //获取当前时间点(time_point) chrono::system_clock::to_time_t //将时间点转换为time_t类型 chrono::system_clock::from_time_t //将time_t类型转化为时间点
实例:获取当前日期
#include<iostream> #include<ctime> #include<chrono> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0), cout.tie(0); auto now = chrono::system_clock::now(); auto tmp = chrono::system_clock::to_time_t(now); cout<<ctime(&tmp)<<endl; //Thu Apr 09 21:48:26 2020 return 0; }
这个时钟一般用来计算时间差,如代码运行时间。
实例:
#include<iostream> #include<ctime> #include<chrono> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0), cout.tie(0); auto st = chrono::steady_clock::now(); for(int i=0;i<1e6;i++) int tmp; auto ed = chrono::steady_clock::now(); auto cost = chrono::duration_cast<chrono::duration<double>> (ed-st); //默认是微妙,将其转化为秒 cout<<cost.count()<<‘s‘<<endl; return 0; }
其内部时间刻度比其他两个时钟更短,精确度更高。
用于表示一个相对于时钟纪元(1970年1月1日0时0分0秒)的时间点
表示时间间隔,如1秒,1天等,这里是他的一些别名
时间间隔(duration)代表着两个时间点(time_point)之差。只有在同一个时钟下的时间间隔才有意义。
duration的构造函数
template<class Rep2, class Period2>
constexpr duration (const duration<Rep2,Period2>& dtn);
template<class Rep2>
constexpr explicit duration (const Rep2& n);
类模板参数中的Rep2指的是数据类型如int等,用于表示间隔差的数据类型,Period2指间隔周期与1s的比值,1s可以用ratio<1,1>表示,1小时可以用ratio<3600,1>表示
chrono::hours hour(10); //声明10个小时的时间间隔 chrono::duration<int64_t,ratio<3600,1>> h(10); //声明10个小时的时间间隔
时间间隔之间的单位转化
chrono::duration<long long,ratio<1,1>> s(60); auto res = chrono::duration_cast<chrono::minutes>(s); //将其转化为以分钟为单位 cout<<res.count()<<endl; // 1
构造函数
template <class Duration2>
time_point (const time_point<clock,Duration2>& tp);
构造一个使用系统时钟的时间点
chrono::time_point<chrono::system_clock,chrono::seconds> tp1(chrono::seconds(50)); // 相对于1970.01.01.00.00.00增加了50秒
auto time = chrono::system_clock::to_time_t(tp1); // 将时间点转化为time_t类型
cout<<ctime(&time)<<endl; // Thu Jan 01 08:00:50 1970 由于我们时区是UTC+8,所以结果会增加8小时
计算两个时间点的差值
chrono::time_point<chrono::system_clock,chrono::minutes> tp1(chrono::minutes(50)); // chrono::time_point<chrono::system_clock,chrono::hours> tp2(chrono::hours(1)); auto res = tp2-tp1; cout<<res.count()<<endl; // 10分钟
标签:ati 间隔 意义 函数 ide 物理 时间间隔 target 增加
原文地址:https://www.cnblogs.com/swustzww/p/12669718.html