最終更新日時:
が更新

履歴 編集

class
<chrono>

std::chrono::steady_clock(C++11)

namespace std {
namespace chrono {
  class steady_clock;
}}

概要

steady_clockは、物理的な時間と同様、決して逆行することがない時間を表現するためのクロックである。

メンバ関数

名前 説明 対応バージョン
now 現在日時の取得 C++11

メンバ型

名前 説明 対応バージョン
rep 時間間隔の内部表現となる算術型 C++11
period 時間の周期を表すratio C++11
duration 時間間隔の型 C++11
time_point 時間の一点を指す型 C++11

メンバ定数

名前 説明 対応バージョン
static const bool is_steady 逆行しないクロックかどうかを表すbool値。値はtrue C++11まで
static constexpr bool is_steady 逆行しないクロックかどうかを表すbool値。値はtrue C++14から

#include <iostream>
#include <chrono>
#include <thread>

using namespace std::chrono;

int main()
{
  // 1. 現在日時を取得
  steady_clock::time_point begin = steady_clock::now();

  // 2. 時間のかかる処理...
  std::this_thread::sleep_for(seconds(3));

  // 3. 現在日時を再度取得
  // 1~3の間にシステム時計が変更されても時間が逆行することはない
  steady_clock::time_point end = steady_clock::now();

  // 経過時間を取得
  seconds elapsed_time = duration_cast<seconds>(end - begin);
  std::cout << elapsed_time.count() << "秒" << std::endl;
}

出力例

3秒

バージョン

言語

  • C++11

処理系

  • GCC, C++11 mode: 4.6.1
  • Visual C++: 11.0, 12.0, 14.0
    • 11.0, 12.0は逆行が起こり得る、すなわち正しくない実装であった。
    • 14.0からは、Windows APIのQueryPerformanceCounter関数を使用した実装である。

参照