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>
minutes
、seconds
などの便利な duration
typedefs
時間、分などの便利なリテラル
duration_values
構造体
ヘッダー ファイル リファレンス