为什么std :: chrono :: duration基于秒

Woj*_*tek 6 c++ c++-chrono

我正在学习<chrono>图书馆,考虑到std::chrono::duration课程,是否有任何特定的理由以秒为基础?例如,存储秒数的变量将是

chrono::duration<int> two_seconds(2);
Run Code Online (Sandbox Code Playgroud)

而所有其他时间跨度都需要将它们与秒相关联,例如

chrono::duration<int, ratio<60>> two_minutes(2);
chrono::duration<int, ratio<1, 1000>> two_milliseconds(2);
chrono::duration<int, ratio<60 * 60 * 24>> two_days(2); 
Run Code Online (Sandbox Code Playgroud)

是否有任何理由在几秒钟而不是分钟,小时等基础上建立持续时间?

mol*_*ilo 33

之所以选择秒,是因为它是SI系统和整个科学的基本时间单位.
即便是美国人也会使用秒针,而不是微缩夜.

为什么这个基本时间跨度不是持续时间类的另一个模板参数

它是,因为你可以提供typedef比率,有些包括在标准中.

#include <chrono>

std::chrono::duration<int, minutes> two_minutes(2);            // Standard
std::chrono::duration<int, milliseconds> two_milliseconds(2);  // Standard
Run Code Online (Sandbox Code Playgroud)

如果你需要更多,他们很容易添加:

typedef std::ratio<60 * 60 * 24> days;
typedef std::ratio<756, 625> microfortnights;

std::chrono::duration<int, days> two_days(2); 
std::chrono::duration<int, microfortnights> two_weeks(1000000); 
Run Code Online (Sandbox Code Playgroud)

  • "即使是美国人也会使用秒针,而不是微缩夜." 为此+1 (41认同)
  • 为4月1日开始做准备永远不会太早......"使用microfortnights = duration <long,std :: ratio <756,625 >>;`;-) (2认同)