在线文档教程
C++
应用 | Utilities

std::chrono::duration::duration

STD::时间::持续时间:持续时间

constexpr duration() = default;(1)(since C++11)
duration( const duration& ) = default;(2)(since C++11)
template< class Rep2 > constexpr explicit duration( const Rep2& r (3)(since C++11)
template< class Rep2, class Period2 > constexpr duration( const duration<Rep2,Period2>& d (4)(since C++11)

构造一个新的duration来自几个可选数据源之一。

1%29默认构造函数是默认的。

2%29复制构造函数默认为%28,按位复制滴答计数%29。

3%29构造一个持续时间r滴答声。请注意,此构造函数仅参与重载解析,如果Rep2%28参数类型%29可以隐式转换为rep%28此持续时间的类型%27s滴答%29和

  • std::chrono::treat_as_floating_point<rep>::value是真的,或者

  • std::chrono::treat_as_floating_point<Rep2>::value都是假的。

%28--也就是说,带整数滴答计数的持续时间不能由浮点值构造,但是带有浮点滴答计数的持续时间可以从整数值%29构造。

4%29通过转换构造持续时间。d到一个适当的时间段并计数,就好像std::chrono::duration_cast<duration>(d).count().为了防止转换期间的截断,此构造函数仅在转换不导致溢出时才参与过载解析,并且:

  • std::chrono::treat_as_floating_point<rep>::value==true或两者兼而有之:

  • std::ratio_divide<Period2, period>::den==1,和

  • std::chrono::treat_as_floating_point<Rep2>::value==false...

%28,也就是说,持续时间使用浮点滴答,或者Period2完全可以被周期%29整除。

参数

r-a tick count
d-a duration to copy from

下面的代码显示了如何构造工期的几个示例%28,包括有效的和无效的%29:

二次

#include <chrono> int main() { std::chrono::hours h(1 // one hour std::chrono::milliseconds ms{3}; // 3 milliseconds std::chrono::duration<int, std::kilo> ks(3 // 3000 seconds // error: treat_as_floating_point<int>::value == false, // This duration allows whole tick counts only // std::chrono::duration<int, std::kilo> d3(3.5 // 30Hz clock using fractional ticks std::chrono::duration<double, std::ratio<1, 30>> hz30(3.5 // 3000 microseconds constructed from 3 milliseconds std::chrono::microseconds us = ms; // error: 1/1000000 is not divisible by 1/1000 // std::chrono::milliseconds ms2 = us std::chrono::duration<double, std::milli> ms2 = us; // 3.0 milliseconds }

二次

另见

operator=assigns the contents (public member function)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/crono/工期/持续时间