我有一段时间
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);
Run Code Online (Sandbox Code Playgroud)
我进去duration了std::chrono::milliseconds.但我需要duration为float或long long.怎么做?
从文档中
Run Code Online (Sandbox Code Playgroud)template< class Rep, class Period = std::ratio<1> > class duration;类模板std :: chrono :: duration表示时间间隔.它由Rep类型的刻度和刻度周期组成,其中刻度周期是编译时有理常数,表示从一个刻度到下一个刻度的秒数.
和:
count返回滴答数
因此,持续时间存储指定时间段的多个刻度,并将count使用基础表示类型返回该数字.因此,如果持续时间的表示是long long,并且周期是std::milli,那么.count()将返回long long等于持续时间表示的毫秒数.
通常,您应该避免使用弱类型float或long long表示持续时间.相反,你应该坚持使用'rich'类型,例如std :: chrono :: milliseconds或std :: chrono :: duration的适当特化.这些类型有助于正确使用和可读性,并通过类型检查帮助防止错误.
未指定/过于笼统:
- void increase_speed(double);
- 对象obj; ... obj.draw();
- Rectangle(int,int,int,int);更好: - void increase_speed(速度);
- 形状; ... s.draw();
- 矩形(Point top_left,Point bottom_right);
- 矩形(Point top_left,Box_hw b);- 从Bjarne的演讲中滑出18
std::chrono 是 "物理量库的一致子集,它只处理时间单位,只有那些时间单位,指数等于0和1".
如果你需要处理大量的时间,你应该利用这个库,或者提供更完整的单元系统的库,比如boost :: units.
极少数情况下,数量必须降级为弱类型值.例如,当必须使用需要此类型的API时.否则应该避免.