mirror of http://git.sairate.top/sairate/doc.git
2.5 KiB
2.5 KiB
-
时长类型:
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
:具有不同单位的特定时长类型。
-
时间点类型:
std::chrono::time_point
:表示时间点。它在时钟类型和时长类型上进行模板化。std::chrono::system_clock
、std::chrono::steady_clock
、std::chrono::high_resolution_clock
:<chrono>
提供的时钟类型。
-
时钟函数:
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()
:如果可用,根据高分辨率时钟获取当前时间。
-
实用函数:
std::chrono::duration_values
:提供时长类型的最小值和最大值。std::chrono::time_point::min()
、std::chrono::time_point::max()
:返回时间点类型的最小值和最大值。
-
算术运算:
- 时长类型支持算术运算,如加法(
operator+
)、减法(operator-
)、乘法(operator*
)、除法(operator/
)以及比较运算(operator==
、operator!=
、operator<
等)。
- 时长类型支持算术运算,如加法(
-
时长字面值:
- 可以使用字面值后缀,如
h
、min
、s
、ms
、us
、ns
来创建时长字面值。例如,5s
表示 5 秒。
- 可以使用字面值后缀,如
这里是一个简单的示例,演示了这些功能:
#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;
}