duration 類別

測量時間範圍,例如一分鐘、兩小時、十毫秒等等。

duration會保留 時間間隔 ,這是時間單位的刻度數。 例如,五分鐘是五個刻度,每個刻度各一分鐘。 42 秒是 42 個刻度,每個刻度相隔一秒。

語法

template <class Rep, class Period> class duration;
template <class Rep, class Period = ratio<1>> class duration;
template <class Rep, class Period1, class Period2> class duration <duration<Rep, Period1>, Period2>;

備註

範本引數 Rep 描述的類型可用來保存間隔內的時鐘刻度數目。 樣板引數 Period 是的具現化 ratio ,描述每個刻度所代表的間隔大小。

成員

建構函式

名稱 描述
duration 建構 duration 物件。

函式

名稱 描述
count 傳回時間間隔內的時鐘刻度數目。
max 靜態。 傳回範本參數 Rep 容許的最大值。
min 靜態。 傳回範本參數 Rep 容許的最小值。
zero 靜態。 實際上,系統會傳回 Rep(0)

操作員

名稱 描述
duration::operator- 傳回具有否定刻度計數的物件 duration 複本。
duration::operator-- 遞減預存的滴答計數。
duration::operator-= 從預存刻度計數減去指定的 duration 刻度計數。
duration::operator+ 傳回 *this
duration::operator++ 遞增預存的滴答計數。
duration::operator+= 將指定的 duration 刻度計數加入至預存的刻度計數。
duration::operator= 將一個持續時間指派給另一個持續時間。
duration::operator*= 將預存的滴答計數模數乘以指定值。
duration::operator/= 將預存的滴答計數除以指定 duration 物件的滴答計數。
duration::operator%= 將預存的滴答計數模數減去指定值。

非成員

函式範本

名稱 描述
abs 傳回 的 duration 絕對值。
ceil 傳回大於或等於指定 duration 之最小可 duration 表示的 。
duration_cast duration 物件轉換成指定的目標 duration 類型。
floor 傳回最大可 duration 表示,小於或等於指定的 duration
from_stream duration使用指定的格式,從指定的資料流程剖析 。
round 將指定的 duration 四捨五入為目標型別中最接近可 duration 表示的 。

操作員

名稱 描述
operator+ 將持續時間轉換成其通用型別之後,傳回 duration 的刻度計數等於已轉換刻度計數總和的 。
operator- 將減去的持續時間轉換成其一般型別之後,傳回 duration 的刻度計數等於從 LHS duration 中的刻度數目減去的 RHS duration 中的刻度數。
operator* 將持續時間乘以至其一般型別之後,傳回 duration 的刻度計數等於所轉換刻度計數乘法的 。
operator/ 將持續時間轉換成其一般型別之後,傳回 duration 的刻度計數等於已轉換刻度計數除法的 。
operator% duration 和 除數轉換成其通用型別之後,傳回 duration 的刻度計數等於除法的其餘部分。
operator== 轉換要與一般型別比較的類型 duration 之後,判斷刻度數目是否相等。
operator!= 判斷是否 duration 不等於另一個。
operator< 判斷其中一個是否小於另一 duration 個。
operator<= 判斷一個 duration 是否小於或等於另一個。
operator> 判斷其中一個是否大於另一 duration 個。
operator>= 判斷一個 duration 是否大於或等於另一個。
operator<=> 比較一個與另一個 durationduration 。 運算子 >, >=, <=, <, != 是由編譯器合成。
operator<< duration將 輸出至指定的資料流程。

便利類型別名

名稱 描述
duration::period Period 樣板參數的同義字。
duration::rep Rep 樣板參數的同義字。

需求

標頭:<chrono>

命名空間:std::chrono

duration::count

擷取時間間隔內的時脈週期數目。

constexpr Rep count() const;

傳回值

時間間隔內的時脈週期數目。

duration::duration 建構函式

建構 duration 物件。

1) constexpr duration() = default;
2) constexpr duration(const duration& d) = default;

3) template <class Rep2>
constexpr explicit duration(const Rep2& R);

4) template <class Rep2, class Period2>
constexpr duration(const duration<Rep2, Period2>& Dur);

參數

Dur
Period2 所指定期間的滴答數。

Period2
std::ratio 範本特製化,表示以秒為單位的滴答期間。

R
預設期間的滴答數。

Rep2
代表滴答數的算術類型。

備註

1) 預設建構函式會建構未初始化的物件。 使用空的大括號初始化的值,可初始化物件,以表示零個時鐘刻度的時間間隔。

2) 複製建構函式會建立 的位複本 d

3) 建構 物件,此物件表示使用預設期間的時鐘刻度時間間隔 Rstd::ratio<1> 。 為了避免刻度計數的舍入,從表示型 Rep2 別建構持續時間物件是錯誤的,當無法視為浮點類型時 duration::rep ,可以視為浮點類型。

4) 建構 物件,此物件表示其長度為 所 Dur 指定的時間間隔。 為了避免截斷刻度計數,從另一個持續時間物件建構持續時間物件時發生錯誤,該物件的類型與 目標型別不可 比對。

如果無法將持續時間類型視為浮點類型,且 D2 ratio_divide D1::p eriod、D2::p eriod > ::type::d en 不是 1,則持續時間類型 D1 與另一個持續時間類型 D2 不可比 對。 <

除非 Rep2 隱含轉換成 rep ,而且 treat_as_floating_point<rep> 會保留 true 或保留 false ,否則 treat_as_floating_point<Rep2> 第二個建構函式不會參與多載解析。 如需詳細資訊,請參閱 < type_traits >

除非轉換中未引發任何溢位並 treat_as_floating_point<rep> 保留 true ,或同時 ratio_divide<Period2, period>::den 等於 1 且 treat_as_floating_point<Rep2> 保留 false ,否則第三個建構函式不會參與多載解析。 如需詳細資訊,請參閱 < type_traits >

範例:建立 duration

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    // create a duration that tracks ticks as 1/10ths of a second
    duration<int, std::ratio<1, 10>> tenths{ 5 };
    std::cout << tenths << '\n';

    hours h{12}; // hours is a convenience duration typedef 
    auto h2 = 3h; // 'h' is a convenience operator. h2 is a duration<int, std::ratio<3600,1>>

    std::cout << h << ":" << h2 << '\n';

    return 0;
}
5ds
3h:3h

duration::max

靜態方法會傳回範本參數類型 Rep 的上限值。

static constexpr duration max();

傳回值

實際上,系統會傳回 duration(duration_values<rep>::max())

duration::min

靜態方法會傳回範本參數類型 Rep 的下限值。

static constexpr duration min();

傳回值

實際上,系統會傳回 duration(duration_values<rep>::min())

duration::operator-

傳回具有否定刻度計數的物件 duration 複本。

constexpr duration operator-() const;

duration::operator--

遞減預存的滴答計數。

1) duration& operator--();
2) duration operator--(int);

傳回值

1) 傳回 *this 。 2) 在遞減之前傳回 的複本 *this

duration::operator%=

減少指定的值預存刻度計數模數。

1) duration& operator%=(const rep& Div);
2) duration& operator%=(const duration& Div);

參數

Div
1) Div 刻度計數。 2) Divduration 包含刻度計數的 。

傳回值

duration完成模數作業之後的物件。

duration::operator*=

將預存的滴答計數模數乘以指定值。

duration& operator*=(const rep& Mult);

參數

Mult
duration::rep 所指定的類型值。

傳回值

duration乘法完成之後的物件。

duration::operator/=

將預存的滴答計數模數除以指定值。

duration& operator/=(const rep& Div);

參數

Div
duration::rep 所指定的類型值。

傳回值

分割 duration 完成之後的物件。

duration::operator+

傳回 *this

constexpr duration operator+() const;

傳回值

*this

duration::operator++

遞增預存的滴答計數。

1) duration& operator++();
2) duration operator++(int);

傳回值

1) 傳回 *this 。 2) 傳回遞增之前的 複本 *this

duration::operator+=

將預存的滴答計數加上指定 duration 物件的滴答計數。

duration& operator+=(const duration& Dur);

參數

Dur
duration 物件。

傳回值

新增 duration 之後的物件。

duration::operator-=

將預存的滴答計數減去指定 duration 物件的滴答計數。

duration& operator-=(const duration& Dur);

參數

Dur
duration 物件。

傳回值

duration完成減法之後的物件。

duration::zero

傳回 duration(duration_values<rep>::zero())

static constexpr duration zero();

duration::operator=

將一個持續時間指派給另一個持續時間。

duration& operator=(const duration &other) = default;

參數

other
duration 複製的物件。

傳回值

LHS duration 物件。

另請參閱

<chrono>
便利 duration typedefs,例如 minutesseconds 等等
小時、分鐘等等的便利常值
duration_values 結構
標頭檔參考