c++ - 如何将 std::chrono::high_resolution 类型转换为浮点类型?
问题描述
我想转换std::chrono::high_resolution_clock start
为浮点类型。我尝试使用 static_cast 但我仍然不断收到一个编译错误,上面写着
invalid static_cast from type 'std::chrono::_V2::system_clock::time_point {aka std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> > >}' to type 'float'
float duration = static_cast<float>(start) + static_cast<float>(ms);
和
invalid static_cast from type 'std::chrono::milliseconds {aka std::chrono::duration<long long int, std::ratio<1ll, 1000ll> >}' to type 'float'
float duration = static_cast<float>(start) + static_cast<float>(ms);
代码:
std::chrono::milliseconds ms(5000);
std::chrono::high_resolution_clock::time_point start = std::chrono::high_resolution_clock::now();
float duration = static_cast<float>(start) + static_cast<float>(ms);
解决方案
你不能time_point
像那样施放 s 来获得持续时间。试试这个:
std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();
std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();
float dur_seconds = std::chrono::duration<float>(end - start).count();
如果您想以秒以外的时间获得持续时间,则需要提供比率,例如std::milli
:
float dur_milli = std::chrono::duration<float, std::milli>(end - start).count();
std::cout << "time spent: " << dur_seconds << " seconds\n";
std::cout << "time spent: " << dur_milli << " milliseconds\n";
推荐阅读
- caching - 为部分 graphQL 查询指定缓存策略
- c++ - 定义多维模板数组时递归如何工作?
- apache-spark - For Loop 在 EMR (pyspark) 中不断重启
- clips - 如何停止对已修改事实的规则重复激活?
- python - 在数据框中查找日期并将数据附加到不同的数据框 PYTHON
- html - 为什么不能在图像之后放置 '::after' 伪选择器?
- c# - 蜡烛数组从响应到历史对象列表的转换。正文中的其他细节
- alteryx - 如何控制不相关的 Alteryx IO 任务的执行顺序?
- css - 图像和文本换行之前的 Psuedo
- google-bigquery - 将数据从键值对提取到 Google Bigquery 中的列标题