C++11 chrono入门

编程入门 行业动态 更新时间:2024-10-07 12:25:11

C++11 chrono<a href=https://www.elefans.com/category/jswz/34/1770026.html style=入门"/>

C++11 chrono入门

​    C++11引入chrono类来表示时间中的一些概念,以及进行时间相关的计算,这是因为传统使用算术的方式来表示时间间隔和时间点本身这是很模凌两可的。通过使用chrono类库,使用不同的类型来表示不同的时间概念,这有助于通过编译器在编译时来帮助程序员发现一些逻辑错误,为此chrono抽象了如下几个概念:

duration

​    一个时间的duration表示的就是一个时间间隔,比如:3秒、3分钟、3小时等。在chrono类库中就分别有对应的时间单位来表示durationstd::chrono::seconds表示的是秒,是时间的间隔单位,其实现如下:

class seconds {int64_t sec_;public:seconds() = default;//....
};

​    就是一个类中包含了一个int64_t的成员来保存秒数,很简单,其次为了区分秒数和普通的数值之间的差异,seconds类在设计的时候就禁止数值隐式转换为seconds类,所以下面这样的操作编译不会通过:

seconds s = 3;  // 编译出错
seconds s1{3};  // 这样是可以的
s1 = 4; // 编译出错std::cout << s << "\n"; // 很不幸目前还不可以
std::cout << s.count() << "s\n"; // 这样是可以的seconds s2 = 3s;    // C++14支持
seconds s3 = s2 + s1;   // 支持基本的算术操作,但是不支持seconds和一个普通数值进行算术操作seconds::min(); // 获取秒类型可以表示的范围,
seconds::max();

​    除了seconds外,chrono还提供了nanosecondsmicrosecondsmillisecondsminuteshours。用法基本上seconds一致。这些类型之间的转化规则chrono都已经帮我们做好了,例如: 1seconds == 1000milliseconds,而且这种转换是隐式的。例如下面这段代码:

更多推荐

C++11 chrono入门

本文发布于:2024-03-15 11:10:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1738763.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:入门   chrono

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!