我有一个持续时间
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(使用前将#替换为@)