chrono库学习

内容分享3小时前发布 DunLing
0 0 0

chrono 的核心内容

1、Durations

std::chrono::duration 表明一段时间,表明如下

template <class Rep, class Period = ratio<1> > class duration;

Rep表明一种数值类型,用来表明Period的数量,列如int float double

Period是ratio类型,用来表明【用秒表明的时间单位】列如second milisecond

常用的duration<Rep,Period>已经定义好了,在std::chrono::duration下:

ratio<3600, 1> hours

ratio<60, 1> minutes

ratio<1, 1> seconds

ratio<1, 1000> microseconds

ratio<1, 1000000> microseconds

ratio<1, 1000000000> nanosecons

可以这样使用:

#include <iostream>
#include <chrono>

int main() {
    
    typedef std::chrono::hours hours;
    typedef std::chrono::minutes minutes;
    typedef std::chrono::duration<int,std::ratio<60*60,1>> my_hours;
    typedef std::chrono::duration<int,std::ratio<60,1>> my_minutes;
    
    return 0;
}

hours 、my_hours,minutes、my_minutes是等价的

由于存在不同的Duration,chrono库提供了duration_cast类型转换函数。

可以这样使用

#include <iostream>
#include <chrono>

int main() {
    
    typedef std::chrono::hours hours;
    typedef std::chrono::minutes minutes;
    typedef std::chrono::duration<int,std::ratio<60*60,1>> my_hours;
    typedef std::chrono::duration<int,std::ratio<60,1>> my_minutes;
    
    
    hours one_hours{1};//一个1小时
    my_hours my_one_hours(1);
    minutes one_minute(1);//一个1分钟
    my_minutes my_one_minutes{1};
    
    std::cout<<"one_hours duration has	"<<one_hours.count()<<"	ticks
"
             <<"my_one_hours duration has	"<<one_hours.count()<<"	ticks
"
             <<"one_minutes duration has	"<<one_minute.count()<<"	ticks
"
             <<"my_one_minutes duration has	"<<my_one_minutes.count()<<"	ticks
";
            
    std::cout<<"one hour has	"<<std::chrono::duration_cast<minutes>(one_hours).count()<<"	minutes
"
             <<"one hour has	"<<std::chrono::duration_cast<my_minutes>(one_hours).count()<<"	minutes
"
             <<"my_one hour has	"<<std::chrono::duration_cast<minutes>(my_one_hours).count()<<"	minutes
"
             <<"my_one hour has	"<<std::chrono::duration_cast<my_minutes>(my_one_hours).count()<<"	minutes
";
             
    return 0;
}

运行结果

one_hours duration has  1   ticks
my_one_hours duration has   1   ticks
one_minutes duration has    1   ticks
my_one_minutes duration has 1   ticks
one hour has    60  minutes
one hour has    60  minutes
my_one hour has 60  minutes
my_one hour has 60  minutes

© 版权声明

相关文章

暂无评论

none
暂无评论...