【发布时间】:2015-01-09 11:22:22
【问题描述】:
我正在学习 <chrono> 库,考虑到 std::chrono::duration 类,是否有任何特定的理由以秒为基础?例如,存储秒数的变量是
chrono::duration<int> two_seconds(2);
所有其他时间跨度都需要将它们与秒相关联,例如
chrono::duration<int, ratio<60>> two_minutes(2);
chrono::duration<int, ratio<1, 1000>> two_milliseconds(2);
chrono::duration<int, ratio<60 * 60 * 24>> two_days(2);
是否有任何理由将持续时间基于秒而不是基于分钟、小时等?
【问题讨论】:
-
秒是持续时间值的物理基准。可能是这个原因?
-
如果是其他单位,你会问相应的问题吗?
-
它必须基于something,因为它被存储为一个整数值和一个(整数的)比率。您还有什么建议作为基本单位?秒是最自然的,因为它是时间的SI unit。
-
如果要作为模板参数传递,这些类型将如何定义?我猜是通过使用某个基本单位的比率。这正是
chrono::duration自己所做的。如果您使用std::chrono::milliseconds类型(类型定义为您已经在第二行代码中发布的内容),您也可以使用毫秒作为“基础” -
“有什么原因……不是分钟、小时等?” 感谢leap seconds,分钟和小时没有一致的持续时间。跨度>