微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么两个计时时间点的差异会导致秒?

如何解决为什么两个计时时间点的差异会导致秒?

我有以下代码

#include <algorithm>
#include <iostream>
#include <iomanip>
#include <ctime>
#include <chrono>

using namespace std;
using namespace std::chrono;

int main()
{
    
    using my_timepoint = time_point<high_resolution_clock,nanoseconds>;
    
    my_timepoint Now = system_clock::Now();
    my_timepoint then = system_clock::Now() - seconds{1};
  
    duration<double> my_dur = Now - then;
   
    cout << my_dur.count();
}

这里 my_timepointnanoseconds 表示,但我仍然得到此代码输出1。为什么不是1e+09?如何评价两个时间点的差异?

解决方法

持续时间模板采用一个比率参数,如下所述: https://en.cppreference.com/w/cpp/chrono/duration

发布的代码使用的是默认值(每 1 秒 1 个滴答声),所以很自然地,当您向它请求 count() 时,它只会返回 1,以表示已经过去的滴答声。>

你可以构造一个使用不同比率的持续时间对象,然后你会得到1e+09

duration<double,std::ratio<1,1000000000>> my_dur = now - then;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。