卡盟网站怎么做,怎样做浏览的网站不被发现,详情页设计教程,建设网站需要什么设施使用 chrono 库的好处是可以以不同的精度测量时间#xff0c;包括纳秒、微秒、毫秒和秒。通过计算两个时间点之间的时间间隔#xff0c;可以精确地测量代码执行的时间。 通过一个具体实例来逐步讲解时间库chrono的使用#xff0c;实例如下#xff1a; // 开始计时a… 使用 chrono 库的好处是可以以不同的精度测量时间包括纳秒、微秒、毫秒和秒。通过计算两个时间点之间的时间间隔可以精确地测量代码执行的时间。 通过一个具体实例来逐步讲解时间库chrono的使用实例如下 // 开始计时auto startTime std::chrono::steady_clock::now();//自己定义的检查答案的函数可忽略checkAnswers(problems);// 停止计时auto endTime std::chrono::steady_clock::now();// 计算答题时间std::chrono::durationdouble elapsedSeconds endTime - startTime;int elapsedMinutes static_castint(elapsedSeconds.count() / 60);int elapsedSecondsRemainder static_castint(elapsedSeconds.count()) % 60;std::cout Time taken: elapsedMinutes minutes elapsedSecondsRemainder seconds std::endl;
逐条语句讲解
开始或者停止计时的代码 // 开始计时auto startTime std::chrono::steady_clock::now();// 停止计时auto endTime std::chrono::steady_clock::now();这段代码使用了C标准库中的 chrono 头文件中的时间库用于获取开始计时时间并将其存储在变量 startTime 中获取停止计时时间并将其存储在变量 endTime 中。
下面是对该代码的解释 std::chrono::steady_clocksteady_clock 是一个表示稳定、递增的时钟用于测量时间间隔。它提供了一个相对稳定的时间基准适用于测量较小时间间隔。 std::chrono::steady_clock::now()now() 是 steady_clock 类的成员函数用于获取当前的时间点。 auto startTime std::chrono::steady_clock::now();这行代码使用 auto 关键字自动推导变量类型将当前时间点的值赋给变量 startTime。由于 std::chrono::steady_clock::now() 返回的是一个时间点对象编译器通过自动类型推导将其分配给 startTime 变量。
计算答题时间的代码 // 计算答题时间std::chrono::durationdouble elapsedSeconds endTime - startTime;int elapsedMinutes static_castint(elapsedSeconds.count() / 60);int elapsedSecondsRemainder static_castint(elapsedSeconds.count()) % 60;这段代码用于计算答题时间并将其分解为分钟和秒。
std::chrono::durationdouble elapsedSeconds endTime - startTime; 这一行代码计算 endTime 和 startTime 之间的时间差并将结果存储在 elapsedSeconds 变量中。elapsedSeconds 是一个 std::chrono::duration 类型的对象用于表示持续的时间。通过将 endTime 减去 startTime我们得到了这段时间的持续时间。
注std::chrono::duration 是 C 标准库中用于表示时间持续的类模板。std::chrono::duration 提供了一系列成员函数和运算符用于对时间持续进行操作和计算。一些常用的成员函数和运算符包括
count()返回持续时间的内部表示值类型为 Rep。operator、operator-用于对两个持续时间进行加法和减法运算。operator*、operator/用于将持续时间乘以或除以一个标量值。operator、operator!、operator、operator用于比较两个持续时间的大小关系。
int elapsedMinutes static_castint(elapsedSeconds.count() / 60); 这一行代码将持续时间转换为以分钟为单位的整数值。elapsedSeconds.count() 返回持续时间的秒数除以 60 可以得到分钟数。使用 static_castint 进行强制类型转换将浮点数结果转换为整数。
注static_cast 是 C 中的一种类型转换操作符用于进行静态类型转换static_cast。
静态类型转换是一种在编译时进行的类型转换它允许将一个类型转换为另一个相关类型前提是这两个类型之间存在某种类型转换的关系。
static_cast 可以用于以下几种转换 隐式类型转换static_cast 可以将一种算术类型转换为另一种算术类型如将 int 转换为 double、将 float 转换为 int 等。 类层次转换static_cast 可以在类层次结构中进行向上转型upcast和向下转型downcast但在向下转型时需要注意安全性因为 static_cast 不提供运行时类型检查。如果向下转型是不安全的应该使用 dynamic_cast 进行动态类型转换。 指针类型转换static_cast 可以在指针类型之间进行转换包括将派生类指针转换为基类指针向上转型和将基类指针转换为派生类指针向下转型。在指针转换时编译器不会进行运行时类型检查因此需要确保转换是安全的。 引用类型转换static_cast 可以在引用类型之间进行转换类似于指针类型转换。转换时需要注意类型的兼容性和安全性。
int elapsedSecondsRemainder static_castint(elapsedSeconds.count()) % 60; 这一行代码计算以秒为单位的剩余时间。elapsedSeconds.count() 返回持续时间的秒数使用 static_castint 将其转换为整数。然后通过取模运算符 % 将其对 60 取余得到不足一分钟的剩余秒数。