time - 为什么两个计时时间点的差异会导致秒数?
问题描述
我有以下代码:
#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_timepoint
表示nanoseconds
仍然我得到此代码的输出为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;
推荐阅读
- ruby-on-rails - 如何更新 MailChimp 列表中的订阅者电子邮件(在 Ruby on Rails 中使用 Gibbon API)
- angular - 如何在 td 中实现 ngIf
- python - 如何从Python中的字符串中取出前2位数字
- c# - c# Should I use a service or just poll the database
- angular - How to add new rows inside of *ngFor loop? I Want to Implement expanding collapsing functionality inside of the table
- android - 如何在左侧操作栏上膨胀菜单
- java - Couldn't load class com.mysql.jdbc.Driver by class.forName("com.mysql.jdbc.Driver")
- angular - Angular 5:如何将事件从 authguard 广播到标头?
- python - 使用 Python 库的问题 - Pyotodom
- android - How can I create .vcf file for a single contact?