zoukankan      html  css  js  c++  java
  • cartographer_common_time

    class Time 时间类型

    作用:实现时间相关变量转换,本类中用到C++ 库chrono,参考小贴士

    主要函数:

    double ToSeconds(Duration duration); 把duration(不管什么单位)转换为second

    Time FromUniversal(int64 ticks); 把计数器时间(如 781289445)转换为 Time值(如 3495.345s)。

    int64 ToUniversal(Time time); 与FromUniversal 相反。

    carto 代码引用说明:

    **为信号提供时间戳变量,统计程序运行时间,频率计算等 **


    小贴士

    chrono是一个time library, 源于boost,现在已经是C++标准。类中主要用到std::chrono::duration和std::chrono::time_point 两个函数。参考:https://en.cppreference.com/w/cpp/chrono/

    [std::chrono::duration]表示时间段,即持续时间的多

    [std::chrono::time_poiny]表示时刻,即某个时间

    chrono::duration:

    #include <iostream>
    #include <chrono>
    constexpr auto year = 31556952ll; // seconds in average Gregorian yea
    int main()
    {
    	using shakes = std::chrono::duration<int, std::ratio<1, 1000>>;
        // 把1s时间进行分隔为更小单位,表示duration的分辨率。此处为1s/1000 = 1m				    	std::chrono::seconds sec(1);
    	std::cout << "1 second is:
    "
        // integer scale conversion with no precision loss: no cas
         std::cout << shakes(sec).count() << " shakes
    ";
    }
    
    // 输出为
    1 second is
    1000 shakes.
    
    几个预定:
    typedef duration<long long, nano> nanoseconds; *// 纳秒* 
    typedef duration<long long, micro> microseconds; *// 微秒*
    typedef duration<long long, milli> milliseconds; *// 毫秒*
    typedef duration<long long> seconds; *// 秒*
    typedef duration<int, ratio<60> > minutes; *// 分钟*
    typedef duration<int, ratio<3600> > hours; *// 小时*
    

    duration_cast():

    函数duration_cast()提供了在不同的时间单位之间进行转换的功能。

    #include <iostream> 
    #include <chrono> 
    
    int main() 
    { 
       std::chrono::milliseconds ms = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::minutes(3)); 
       std::cout << "3 minutes equals to " << ms.count() << " milliseconds
    "; 
       std::cin.get(); 
    } 
    

    chrono::time_point:

    #include <iostream> 
    #include <chrono> 
    
    int main() 
    { 
       std::chrono::milliseconds ms = std::chrono::duration_cast<std::chrono::milliseconds>      (std::chrono::minutes(3)); 
       std::cout << "3 minutes equals to " << ms.count() << " milliseconds
    "; 
       std::cin.get(); 
    } 
    
  • 相关阅读:
    PCB genesis方槽加内角槽孔实现方法
    PCB genesis连孔加除毛刺孔(槽孔与槽孔)实现方法(三)
    PCB genesis连孔加除毛刺孔(圆孔与槽孔)实现方法(二)
    PCB genesis连孔加除毛刺孔(圆孔与圆孔)实现方法(一)
    为什么要用Redis而不直接用Map做缓存
    Linux 查询端口被占用命令
    HashMap 和 Hashtable 的区别
    RandomAccess是什么
    接口和抽象类的区别是什么?
    为什么 Java 中只有值传递?
  • 原文地址:https://www.cnblogs.com/heimazaifei/p/12435889.html
Copyright © 2011-2022 走看看