Boost程序库完全开发指南:深入C++”准”标准库(第5版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.8 总结

本章是我们接触Boost程序库的第一章,讨论了Boost在时间与日期领域的两个库:timer和date_time。

timer和progress_timer是两个用于计时的小工具,其实现原理很简单,它使用了C标准中的std::clock(),其精度不高但足够日常使用。特别是progress_timer,它利用了C++中析构函数会被自动调用的特点,能够自动显示时间,用起来更方便。但如果我们需要更高精度的计时,那么应该使用timer库的另一个组件:cpu_timer(10.3节)。

progress_timer一个有趣的特点是私有继承了noncopyable类,以防止被无意的拷贝而破坏了正确的行为。noncopyable是Boost库的一个实用工具类,我们将在4.1节看到它的详细用法。

日期处理是生活中的常见问题,但C++标准中并没有制定这方面的规范,date_time库填补了这个空白,提供了基于格里高利历的日期时间处理,其功能非常全面。date_time库支持时间点、时间长度和时间区间等基本概念,提供了从年、月、日到时、分、秒、微秒乃至纳秒等不同级别的时间分辨率,还重载了很多操作符,可以进行比较、加减等运算,能够满足绝大多数程序的要求。

日期与时间的处理很复杂,date_time库使用了许多工具来简化工作,如使用日期迭代器和时间迭代器以指定的间隔遍历时间,利用时钟类获得所需精度的当前时间,将时区与本地时间转换,定制日期时间的输出格式等,它们比C语言中的时间处理函数要强大得多,而且更易于使用。

date_time库也有小小的缺憾,它不能处理1400年以前的日期,因此无法用它来研究1400年之前的历史。但总体来说date_time库的贡献是卓越的,它赋予了我们在C++中自由操纵时间的能力,值得我们认真学习并掌握。此外,本章并没有完全覆盖date_time库的所有内容,更多的功能还请读者自己发掘。