chrono库duration
时间: 2025-01-04 18:36:39 浏览: 4
### C++ Chrono 库 Duration 使用说明
#### 定义与初始化
`std::chrono::duration` 表示时间间隔,可以用于表示持续的时间长度。支持多种精度单位,如秒、毫秒、微秒等。
```cpp
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
// 创建不同类型的 duration 对象
seconds sec(10); // 10 秒
milliseconds ms(500); // 500 毫秒
microseconds us(750); // 750 微妙
std::cout << "Duration in seconds: " << sec.count() << "\n";
std::cout << "Duration in milliseconds: " << ms.count() << "\n";
std::cout << "Duration in microseconds: " << us.count() << "\n";
return 0;
}
```
#### 运算操作
支持加减乘除运算以及比较操作符来处理 `duration` 类型的数据[^1]。
```cpp
using namespace std::chrono;
seconds s1(1);
milliseconds ms1(500);
// 加法
auto sum = s1 + ms1; // 结果为 1.5 秒
std::cout << "Sum of durations (in milliseconds): "
<< duration_cast<milliseconds>(sum).count() << "\n";
// 减法
auto diff = s1 - ms1; // 结果为 0.5 秒
std::cout << "Difference between durations (in milliseconds): "
<< duration_cast<milliseconds>(diff).count() << "\n";
// 乘法
auto mult = s1 * 2; // 结果为 2 秒
std::cout << "Multiplication result (in seconds): "
<< duration_cast<seconds>(mult).count() << "\n";
// 除法
auto div = s1 / 2; // 结果为 0.5 秒
std::cout << "Division result (in milliseconds): "
<< duration_cast<milliseconds>(div).count() << "\n";
```
#### 时间点与时钟配合使用
通常会将 `duration` 和时钟一起使用以计算两个事件之间经过的时间差。
```cpp
using namespace std::chrono;
steady_clock::time_point start = steady_clock::now();
// 执行某些耗时的操作...
steady_clock::time_point end = steady_clock::now();
nanoseconds elapsed_time = duration_cast<nanoseconds>(end - start);
std::cout << "Elapsed time: " << elapsed_time.count() << " nanoseconds\n";
```
阅读全文