std::chrono::duration<Rep,Period>::duration

来自cppreference.com
< cpp‎ | chrono‎ | duration
 
 
 
日期和时间工具
(C++11)
(C++11)
时钟
(C++20)
                                                  
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
日历
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
时区
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
C 风格日期和时间
 
 
constexpr duration() = default;
(1) (C++11 起)
duration( const duration& ) = default;
(2) (C++11 起)
template< class Rep2 >
constexpr explicit duration( const Rep2& r );
(3) (C++11 起)
template< class Rep2, class Period2 >
constexpr duration( const duration<Rep2,Period2>& d );
(4) (C++11 起)

从数个可选数据源之一构造新的 duration

1) 默认构造函数设为默认。
2) 复制构造函数设为默认(进行计次数的逐位复制)。
3) 构造拥有计次 r 的时长。注意此构造函数仅若 Rep2 (参数类型)能隐式转换为 rep (时长的计次类型)且满足下列条件才参与重载决议
(即,拥有整数计次的时长不能从浮点值构造,但拥有浮点计次的时长能从整数值构造)
4) 通过转换 d 到确切的周期和计次构造时长,如同用 std::chrono::duration_cast<duration>(d).count() 。为避免转换时截断,此构造函数参与重载决议,仅若转换因数的计算(用 std::ratio_divide<Period2, Period> )不溢出且:
或:
(即要么时长使用浮点计次,要么 Period2 能为周期整除)

参数

r - 计次数
d - 从之复制的时长

示例

下列代码展示数个如何构造时长的示例(合法者与非法者):

#include <chrono>
int main()
{
    std::chrono::hours h(1); // 一小时
    std::chrono::milliseconds ms{3}; // 3 毫秒
    std::chrono::duration<int, std::kilo> ks(3); // 3000 秒
 
    // 错误: treat_as_floating_point<int>::value == false,
    // 此时长只允许整数计次
//  std::chrono::duration<int, std::kilo> d3(3.5);
 
    // 使用小数计次的 30Hz 钟
    std::chrono::duration<double, std::ratio<1, 30>> hz30(3.5);
 
    // 从 3 毫秒构造 3000 微秒
    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 微秒
}


参阅

赋值内容
(公开成员函数)