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

59 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
```