doc/notebook/docs/C++/5.chrono.md

59 lines
2.5 KiB
Markdown
Raw Permalink Normal View History

1. **时长类型**
- `std::chrono::duration`:表示时间段。例如,`std::chrono::duration<int>` 表示基于整数的时间段,而 `std::chrono::duration<double>` 表示基于浮点数的时间段。
- `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``<chrono>` 提供的时钟类型。
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 <iostream>
#include <chrono>
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<seconds>(结束 - 开始);
std::cout << "总时长:" << 总时长.count() << " 毫秒\n";
std::cout << "经过时间:" << 经过时间.count() << " \n";
return 0;
}
```