C++11引入的std::chrono库,是对传统C++时间处理方式的一次根本性革新。它不仅统一了时间与日期的表示和计算,还以模板化设计赋予了极强的灵活性和类型安全,彻底告别了以往依赖C风格时间函数的混乱和不精确。
一、std::chrono的核心理念与三大基石
std::chrono的设计哲学是“用类型和模板表达时间”,它围绕三个核心概念构建:
-
• Duration(持续时间) :表示一段时间长度,比如5秒、100毫秒、2小时。它是一个模板类,内部用两个参数描述:计数类型(如
int、double)和时间单位(用std::ratio表示秒的分数,比如毫秒是1/1000秒)。 -
• Time Point(时间点) :表示某个具体的时间点,比如“现在”、“1970年1月1日午夜”等。它是以某个时钟的起点(epoch)为基准,加上一个
duration来表示的。 -
• Clock(时钟) :提供时间点的来源。C++11定义了三种时钟:
- •
system_clock:代表系统时间,通常对应现实世界的时间,可能会被系统调整(比如手动改时间)。 - •
steady_clock:单调递增且不可调整,适合测量时间间隔,保证不会倒退。 - •
high_resolution_clock:最高精度的时钟,通常是system_clock或steady_clock的别名。
- •
这三个概念相辅相成,构成了时间处理的完整体系。
**本文首发于【讳疾忌医-note】公众号,未经授权,不得转载。
**个人教程网站内容更丰富:(www.1217zy.vip/)