1. **时长类型**: - `std::chrono::duration`:表示时间段。例如,`std::chrono::duration` 表示基于整数的时间段,而 `std::chrono::duration` 表示基于浮点数的时间段。 - `std::chrono::hours`、`std::chrono::minutes`、`std::chrono::seconds`、`std::chrono::milliseconds`、`std::chrono::microseconds`、`std::chrono::nanoseconds`:具有不同单位的特定时长类型。 2. **时间点类型**: - `std::chrono::time_point`:表示时间点。它在时钟类型和时长类型上进行模板化。 - `std::chrono::system_clock`、`std::chrono::steady_clock`、`std::chrono::high_resolution_clock`:`` 提供的时钟类型。 3. **时钟函数**: - `std::chrono::duration_cast`:将一个时长转换为具有不同刻度的另一个时长。 - `std::chrono::time_point_cast`:将一个时间点转换为具有不同时钟的另一个时间点。 - `std::chrono::system_clock::now()`:根据系统时钟获取当前时间。 - `std::chrono::steady_clock::now()`:根据稳定时钟(单调时钟)获取当前时间。 - `std::chrono::high_resolution_clock::now()`:如果可用,根据高分辨率时钟获取当前时间。 4. **实用函数**: - `std::chrono::duration_values`:提供时长类型的最小值和最大值。 - `std::chrono::time_point::min()`、`std::chrono::time_point::max()`:返回时间点类型的最小值和最大值。 5. **算术运算**: - 时长类型支持算术运算,如加法(`operator+`)、减法(`operator-`)、乘法(`operator*`)、除法(`operator/`)以及比较运算(`operator==`、`operator!=`、`operator<` 等)。 6. **时长字面值**: - 可以使用字面值后缀,如 `h`、`min`、`s`、`ms`、`us`、`ns` 来创建时长字面值。例如,`5s` 表示 5 秒。 这里是一个简单的示例,演示了这些功能: ```cpp #include #include int main() { using namespace std::chrono; // 定义时长 auto 秒 = seconds(10); auto 毫秒 = 5ms; // 添加时长 auto 总时长 = 秒 + 毫秒; // 获取当前时间点 auto 开始 = steady_clock::now(); // 等待 2 秒 std::this_thread::sleep_for(2s); // 计算经过的时间 auto 结束 = steady_clock::now(); auto 经过时间 = duration_cast(结束 - 开始); std::cout << "总时长:" << 总时长.count() << " 毫秒\n"; std::cout << "经过时间:" << 经过时间.count() << " 秒\n"; return 0; } ```