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。