首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::chrono::duration::duration

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:

二次

代码语言:javascript
复制
#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)

代码语言:txt
复制
 © cppreference.com

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

扫码关注腾讯云开发者

领取腾讯云代金券