检查 std::chrono 持续时间是否小于 0 的惯用方法

NoS*_*tAl 5 c++ c++-chrono c++20

我知道我能做到

if (timeLeft.count() < 0)
Run Code Online (Sandbox Code Playgroud)

但我想知道最好的方法是什么,因为我也可以这样做:

if (timeLeft<std::chrono::seconds(0)) // or milliseconds or nanonseconds...
Run Code Online (Sandbox Code Playgroud)

注意:我认为这两项检查是相同的,但我不是计时专家。

编辑:完整示例:

#include<chrono>
int main(){
    const std::chrono::nanoseconds timeLeft(-5);
    if(timeLeft<std::chrono::seconds(0)){
        return 47;
    }
}
Run Code Online (Sandbox Code Playgroud)

edit2:潜在的问题std::chrono::seconds(0)是新手程序员可能会认为它涉及舍入,尽管事实并非如此。

小智 5

表达这一点的方法之一是使用 std::chrono::duration 文字(https://en.cppreference.com/w/cpp/chrono/duration)。它简短而干净:

#include<chrono>

int main(){
    using namespace std::chrono_literals;
    
    const auto timeLeft = -5ns;
    if(timeLeft<0s){
        return 47;
    }
}
Run Code Online (Sandbox Code Playgroud)