duration クラス

1 分、2 時間、10 ミリ秒などの期間を測定します。

duration は、時間単位のティック数である time interval を保持します。 たとえば、5 分は 5 ティックで、各ティックは 1 分間隔です。 42 秒は 42 ティックで、各ティックは 1 秒間隔です。

構文

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 をそれらの共通型に変換した後で、変換されたティック数の加算結果と等しいティック数を持つ duration を返します。
operator- 減算される duration をそれらの共通型に変換した後で、LHS duration 内のティック数から RHS duration 内のティック数を減算した値と等しいティック数を持つ duration を返します。
operator* 乗算される duration をそれらの共通型に変換した後で、変換されたティック数の乗算結果と等しいティック数を持つ duration を返します。
operator/ 除算される duration をそれらの共通型に変換した後で、変換されたティック数の除算結果と等しいティック数を持つ duration を返します。
operator% duration と除数をそれらの共通の型に変換した後で、除算の余りに等しいティック数を持つ duration を返します。
operator== 比較される duration 型をそれらの共通の型に変換した後で、ティック数が等しいかどうかを判断します。
operator!= duration がもう一方と等しくないかどうかを判断します。
operator< 一方の duration がもう一方のより短いかどうかを判断します。
operator<= 一方の duration がもう一方と同じかそれ以下であるかどうかを判断します。
operator> 一方の duration がもう一方より大きいかどうかを判断します。
operator>= 一方の duration がもう一方と同じかそれ以上であるかどうかを判断します。
operator<=> 一方の duration をもう一方の duration と比較します。 演算子 >, >=, <=, <, != はコンパイラによって合成されます。
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) std::ratio<1> の既定の期間を使用して、R クロック ティックの時間間隔を表すオブジェクトを構築します。 ティック数が丸められないようにするため、duration::rep を浮動小数点型として処理できないときに、浮動小数点型として処理できる Rep2 表現型か duration オブジェクトを構築するとエラーになります。

4) 長さが Dur によって指定された時間間隔である時間間隔を表すオブジェクトを構築します。 ティック数が切り捨てられないようにするため、対象の型と "通約可能" な型を持つ duration オブジェクトから duration オブジェクトを作成するとエラーになります。

D2 を浮動小数点型として処理できず、ratio_divide<D1::period, D2::period>::type::den が 1 ではない場合、duration 型の D1 は、別の duration 型の D2 と "通約可能" になります。

Rep2 が暗黙的に rep に変換可能で、treat_as_floating_point<rep>holds true または treat_as_floating_point<Rep2>holds false のいずれかの場合を除き、2 番目のコンストラクターはオーバーロードの解決に関与しません。 詳細については、「<type_traits>」を参照してください。

変換でオーバーフローが発生せず、treat_as_floating_point<rep>holds true、または ratio_divide<Period2, period>::den が 1 と等しく treat_as_floating_point<Rep2>holds false の場合を除き、3 番目のコンストラクターはオーバーロードの解決に関与しません。 詳細については、「<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) Div ティック数を含む duration

戻り値

モジュロ演算が実行された後の 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>
minutesseconds などの便利な duration typedefs
時間、分などの便利なリテラル
duration_values 構造体
ヘッダー ファイル リファレンス