std::chrono::duration::duration

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() 。为避免转换时截断,此构造函数仅若转换不引入溢出且:
或满足下列条件才参与重载决议:
(即要么时长使用浮点计次,要么 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 微秒
}


参阅

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

版本历史

  • (当前 | 先前 2017年9月22日 (五) 04:43Fruderica讨论 | 贡献 . . (2,724字节) (0). . (撤销)
  • 当前 | 先前 2017年5月7日 (日) 20:04Fruderica讨论 | 贡献. . (2,724字节) (-1,539). . (撤销)
  • 当前 | 先前 2014年10月26日 (日) 16:41P12bot讨论 | 贡献 . . (4,263字节) (0). . (Fix some translations) (撤销)
  • 当前 | 先前 2013年7月2日 (二) 07:20P12bot讨论 | 贡献 . . (4,263字节) (-119). . (Use {{lc}}. Update links. Various fixes.) (撤销)
  • 当前 | 先前 2012年11月2日 (五) 15:35P12bot讨论 | 贡献 . . (4,382字节) (+289). . (r2.7.3) (机器人添加:de, en, es, fr, it, ja, pt, ru) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 09:50P12讨论 | 贡献 . . (4,093字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 06:00TranslationBot讨论 | 贡献. . (4,093字节) (-91). . (Translated from the English version using Google Translate) (撤销)
  • 当前 | 先前 2012年10月25日 (四) 13:14P12讨论 | 贡献 . . (4,184字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前) 2012年10月25日 (四) 12:00TranslationBot讨论 | 贡献. . (4,184字节) (+4,184). . (Translated from the English version using Google Translate)