将chrono::duration与整数进行比较

3

我正在尝试比较执行一段代码所用的时间和一个固定整数。

例如:

auto startProcessingTime = chrono::high_resolution_clock::now();
chrono::duration<int> timeDiff = (chrono::duration_cast<chrono::seconds>(chrono::high_resolution_clock::now() - startProcessingTime));

    if (timeDiff > 12) {
        // DO SOMETHING
        continue;
    }

然而,当我运行此代码时,我遇到了以下错误:

二进制表达式的操作数无效('chrono::duration' 和 'int')

我该如何将 timeDiff 转换为整型?

我也尝试过:

chrono::seconds s = chrono::duration_cast<chrono::seconds>(timeDiff);

然而,

二进制表达式中的操作数无效('chrono :: seconds'(即 'duration')和 'int')

非常感谢任何帮助。


1
推荐观看关于Chrono的视频教程,其中涵盖了这些内容以及它们为什么是这样的:https://www.youtube.com/watch?v=P32hvk8b13M - Howard Hinnant
1个回答

9

您需要告诉它12代表什么。是秒还是毫秒?所以,请将其强制转换:

chrono::seconds(12)

或者(我最喜欢的)将其变成时间字面量。如果你指的是12秒,那么:

using namespace std::chrono_literals;
// ...

if (timeDiff > 12s) {

如果是毫秒:

if (timeDiff > 12ms) {

啊,好的!简单的解决方案,但在查找相关文档中却不知道为什么没有找到这个解决方案!谢谢。 - rrz0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接