我正在学习< chrono>库,并考虑到std :: chrono :: duration类,是否有任何特定的理由以秒为基础?例如,存储秒数的变量将是
- chrono::duration<int> two_seconds(2);
而所有其他时间跨度都需要将它们与秒相关联,例如
- 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);
是否有任何理由在几秒钟而不是分钟,小时等基础上建立持续时间?
解决方法
之所以选择秒,是因为它是SI系统和整个科学的基本时间单位.
即便是美国人也会使用秒针,而不是微缩夜.
即便是美国人也会使用秒针,而不是微缩夜.
why this basic time span isn’t another template parameter for duration class
它是,因为您可以提供比率的typedef,有些包含在标准中.
- #include <chrono>
- std::chrono::duration<int,minutes> two_minutes(2); // Standard
- std::chrono::duration<int,milliseconds> two_milliseconds(2); // Standard
如果你需要更多,他们很容易添加:
- 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);