入门"/>
C++11 chrono入门
C++11
引入chrono类来表示时间中的一些概念,以及进行时间相关的计算,这是因为传统使用算术的方式来表示时间间隔和时间点本身这是很模凌两可的。通过使用chrono类库,使用不同的类型来表示不同的时间概念,这有助于通过编译器在编译时来帮助程序员发现一些逻辑错误,为此chrono抽象了如下几个概念:
duration
一个时间的duration表示的就是一个时间间隔,比如:3秒、3分钟、3小时等。在chrono类库中就分别有对应的时间单位来表示duration。std::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还提供了nanoseconds、microseconds 、milliseconds、minutes、hours。用法基本上seconds一致。这些类型之间的转化规则chrono都已经帮我们做好了,例如: 1seconds == 1000milliseconds,而且这种转换是隐式的。例如下面这段代码:
更多推荐
C++11 chrono入门
发布评论