Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::chrono::

duration::duration

公众成员函数  <chrono>

(1)
duration() = default;
(2)
duration (const duration& dtn);
(3)
template<class Rep2, class Period2>
constexpr duration (const duration<Rep2,Period2>& dtn);
(4)
template<class Rep2>
constexpr explicit duration (const Rep2& n);

构建duration对象
构造一个duration对象。

默认构造函数(1)
使用默认初始化的计数器值构造一个对象。

从持续时间对象构造(2),(3)
初始化为dtn的持续时间对象。

以内部计数器初始化一个持续时间对象
初始化一个持续时间的计数器为n的对象。

初始化构造函数(3)和(4)只在Rep2类型精度不大于新构造的持续时间对象中使用的rep类型时调用(不会导致隐式精度损失错误)。

在这里,如果rep的treat_as_floating_point值为真,Rep2就不会被认为精度更高。

如果为了强制在持续时间类型之间进行转换,(无论其精度如何,即使这会导致精度损失)可以使用duration_cast。

☲  参数


dtn
另一个持续时间对象。
duration<Rep2,Period2>是在转换时不会导致隐式精度损失错误的类型。

n
计数器的值。
Rep2是算术类型(或模拟算术类型的类)。

☣  示例



// duration constructor
#include <iostream>
#include <ratio>
#include <chrono>

int main ()
{
  typedef std::chrono::duration<int> seconds_type;
  typedef std::chrono::duration<int,std::milli> milliseconds_type;
  typedef std::chrono::duration<int,std::ratio<60*60>> hours_type;

  hours_type h_oneday (24);                  // 24h
  seconds_type s_oneday (60*60*24);          // 86400s
  milliseconds_type ms_oneday (s_oneday);    // 86400000ms

  seconds_type s_onehour (60*60);            // 3600s
//hours_type h_onehour (s_onehour);          // NOT VALID (type truncates), use:
  hours_type h_onehour (std::chrono::duration_cast<hours_type>(s_onehour));
  milliseconds_type ms_onehour (s_onehour);  // 3600000ms (ok, no type truncation)

  std::cout << ms_onehour.count() << "ms in 1h" << std::endl;

  return 0;
}

输出:
3600000ms in 1h

🍄  另请参阅



duration_cast 持续时间转换 (函数模板)
duration::count 获取计数器(公众成员函数)

联系我们 免责声明 关于CandCplus 网站地图