C++ chrono - 获取 float 或 long long 形式的持续时间

2023-12-02

我有一个持续时间

typedef std::chrono::high_resolution_clock Clock;
Clock::time_point       beginTime;
Clock::time_point       endTime;
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - beginTime);

我得到duration in std::chrono::milliseconds。但是我需要duration as float or long long。怎么做?


来自文档

template<
    class Rep, 
    class Period = std::ratio<1> 
> class duration;

类模板 std::chrono::duration 表示时间间隔。它 由 Rep 类型的刻度计数和刻度周期组成,其中 刻度周期是一个编译时有理常数,表示 从一个刻度到下一个刻度的秒数。

And:

count返回刻度数

因此,持续时间存储指定时间段内的多个刻度,并且count将使用底层表示类型返回该数字。所以如果持续时间的表示是long long,周期为std::milli, then .count()将返回一个long long等于持续时间表示的毫秒数。


一般来说,您应该避免使用弱类型,例如float or long long来表示一个持续时间。相反,你应该坚持“富有”类型,例如 std::chrono::milliseconds 或 std::chrono::duration 的适当特化。这些类型有助于正确使用和可读性,并有助于通过类型检查防止错误。

  • 未明确/过于笼统:
    - 无效增加速度(双);
    – 对象 obj; ... obj.draw();
    - 矩形(int,int,int,int);

  • 更好: – voidincrease_speed(Speed);
    – 形状; ... s.draw();
    – 矩形(左上点,右下点);
    – 矩形(Point top_left, Box_hw b);

— 幻灯片 18 来自比亚恩的讲话


std::chrono is“物理量库的一致子集,仅处理时间单位以及指数等于 0 和 1 的时间单位。”

如果您需要处理大量时间,您应该利用这个库,或者提供更完整的单位系统的库,例如提升::单位.

在极少数情况下,数量必须降级为弱类型值。例如,当必须使用需要此类类型的 API 时。否则应该避免。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ chrono - 获取 float 或 long long 形式的持续时间 的相关文章

随机推荐

  • SocketIO:通过套接字ID断开客户端连接?

    我有一个带有 SocketIO 和多个连接的节点服务器 如何根据 ID 断开现有套接字 有房间 每个房间都有一个管理员和其他连接 我的目标是使管理套接字能够根据其 ID 使任何其他套接字断开连接 解决方法是向要被踢出的客户端发送一条消息以
  • valgrind:mmap(0x600000,8192)在UME中失败,错误12(无法分配内存)

    我正在关注这个练习 此页面包含安装 Valgrind 3 6 1 的说明 但我当前的 Linux 内核版本不支持此版本的 Valgrind 因此 我安装了 Valgrind 3 11 0 并在运行此命令后按照说明进行操作 valgrind
  • Grails Gorm 如何为每个具体类插入表,其中每个具体类都继承一个抽象类

    大家好 以下是情况 我有一个抽象类 AbstractProfile 和一个具体类 GoogleProfile abstract class AbstractProfile class GoogleProfile extends Abstra
  • C# 程序使用秒表来计时操作时冻结

    我有一个控制灯的 Windows 窗体程序 这种光有自己的类别 我可以做一些事情 比如打开和关闭它 改变颜色等 我可以毫无问题地做到这一点 然而 我想要做的是让灯持续特定的时间 即 100 毫秒或 300 毫秒 取决于使用情况 我尝试使用秒
  • 将 onlongclick 侦听器添加到警报对话框

    我在 android 中有一个 AlertDialog 其中包含来自 sqlite 的好友列表 当我单击列表中的好友姓名时 就会呼叫该好友 我想做的是将一个 longclicklistener 添加到列表中 这样系统就可以提示我删除列表中的
  • 有没有办法在 Postgres 中禁用函数重载

    我和我的用户不在 PL pgSQL 中使用函数重载 每个 模式 名称 元组总是有一个函数 因此 我们希望仅按名称删除函数 更改其签名而不必先删除它 等等 例如 考虑以下函数 CREATE OR REPLACE FUNCTION myfunc
  • 有没有办法在 python 中从头开始创建 .xlsm 文件?

    我在 mac 上使用 python 3 8 1 并尝试创建一个 xlsm文件从头开始 我看过 openpyxl 和 xlsxwriter 它们都能够创建 xlsx文件从头开始 两者都可以编辑现有的 xlsm文件 但我找不到任何有关实际创建的
  • SQLite INSERT ... ON CONFLICT ... WHERE ... DO UPDATE SET 的替代方案

    我正在 Linux 上运行一个使用 SQLite3 版本 3 7 17 的应用程序 这条语句出错了 INSERT INTO taxa taxon id rank parent id VALUES ON CONFLICT taxon id W
  • 从 python 脚本设置 bash 变量

    我在 bash 脚本中调用 python 脚本 我想知道是否有一种简单的方法可以在 python 脚本中设置 bash 变量 Example 我的 bash 脚本 bin bash someVar python3 some folder p
  • 使用 Ajax 和 beforeSend 显示图像

    我对 jquery 和 ajax 比较陌生 我对它们的可能性感到惊讶 我正在开发我的第一个 ajax jquery 带验证插件 网络表单 快完成了 但是有一点不明白 我想显示一个加载图标并使用 beforeSend 方法禁用发送按钮 但它不
  • 如何了解我的平板电脑支持哪些采样率?

    我有一个应用程序可以在许多设备 Xoom Xyboard 等 上完美运行 但在 Galaxy 10 1 上的这一行失败 mrec setAudioSamplingRate 44100 当我注释掉这一行时 一切都会顺利进行 我不确定它默认使用
  • R 中矩阵两列相乘之和

    我使用以下方法在 R 中生成一个矩阵 ncolumns 3 nrows 10 my mat lt matrix runif ncolumns nrows ncol ncolumns 该矩阵表示 3D 中点的坐标 R中如何计算以下值 sum
  • R中按组删除异常值

    在我的数据集中 我必须分别删除每个组的异常值 这是我的数据集 vpg structure list customer c 1L 1L 1L 1L 2L 2L 2L 2L 1L 1L 1L 1L 2L 2L 2L 2L code c 2L 2
  • iOS 15 - 前台通知不会播放通知声音

    在 iOS 15 中播放与通知相关的提示音而不显示横幅或列表的正确方法是什么 在前台处理通知时 无论是本地通知还是推送通知 如果出现以下情况 则不会播放通知声音 UNNotificationPresentationOptions只是soun
  • google automl 会自动进行图像增强吗?

    我正在使用 google 的 automl 使用自定义数据集 该数据集由我收集的图像组成 然而 手动标记图像需要一些时间 所以我想通过图像增强来扩大数据集 例如旋转和模糊 automl 会自动在屏幕后面执行增强吗 AutoML 执行几种类型
  • Pycharm:Python Qt 代码代码补全

    我是 Python 中 Qt 的初学者 我通过使用创建了简单的Qt设计师 我需要什么 用户单击按钮后 应用程序将文本从编辑复制到标签 我有文件example ui来自 Qt 设计师
  • SendInput 与 keybd_event

    MSDN 指出 keybd event 已被 SendInput 取代 在重写过程中 我改用 SendInput 这很好except当尝试发送 Alt 键组合时 在 Win7 64 位系统上 尚未在其他地方尝试过 发送 Alt 键会导致击键
  • 使用 zlib 支持从源代码构建 Python

    在 Ubuntu 12 04 上从源代码构建 Python 3 2 3 时 zlib 模块不可用 我从 python org 下载了官方源代码发行版 并尝试使用以下命令构建和安装它 tar xfa Python3 2 3 tar bz2 c
  • 如何在不破坏单词的情况下分割长字符串?

    我正在寻找类似的东西 str split whole word longString x Where longString是句子的集合 并且 x是每行的字符长度 它可能相当长 我想基本上将其以数组的形式分成多行 例如 longString
  • C++ chrono - 获取 float 或 long long 形式的持续时间

    我有一个持续时间 typedef std chrono high resolution clock Clock Clock time point beginTime Clock time point endTime auto duratio