2017-08-01 4 views
-4

こんにちは私はstd :: chronoに問題があります。インクルードの挿入を行います。関数Startで時間をゼロにリセットしようとしています。 .cppファイルにstd :: chronoの問題点:時間をリセットする

私の機能

void MyTimer::Start(){ std::chrono::duration::zero;} 

my.hhはシングルトンと私の機能

public : 
    static MyTime& GetInstance; 
private: 
    static MyTime t_getinstance; 
    MyTime& operator = 'const MyTime&){} 
    MyTime (const MyTime&){} 
    void Start(); 

を持って、私はクロノを使用するために別のライブラリを含める必要がありますか?私の時間をリセットしたい場合は、std:chrono:duration :: zeroは良い考えですか?私はこのライブラリをよく理解していないからです。

+0

http://en.cppreference.com/w/cpp/chrono/duration/zero – LogicStuff

+1

にコードを書き換えないでくださいあなたは無関係の問題を追加します。代わりに、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を作成して表示してください。 –

+0

ビデオチュートリアルは、「」を使い始める簡単な方法です。https://www.youtube.com/watch?v=P32hvk8b13M –

答えて

0

時間をリセットするには?いいえ。

2つの時点の差を計算するだけです。単純な考え方は今から始まります()。

#include <chrono> 
// 'compressed' chrono access --------------vvvvvvv 
typedef std::chrono::high_resolution_clock HRClk_t; 
typedef HRClk_t::time_point     Time_t; 
typedef std::chrono::milliseconds   MS_t;  
typedef std::chrono::microseconds   US_t;  
typedef std::chrono::nanoseconds   NS_t;  
using namespace std::chrono_literals; // suffixes: 100ms, 2s, 30us 

そして、次のような持続時間の測定のために使用します。

int main(int argc, char* argv[]) 
{ 
    Time_t start_us = HRClk_t::now(); // time point 1 

    int retVal = 0; 
    { 
     T514_t test514; 
     retVal = test514.exec(); // do interesting stuff 
    } 

    auto duration_us = 
    std::chrono::duration_cast<US_t>(HRClk_t::now() - start_us); 
    // time points ------------------ -------2------- - ----1--- 

    // after cast for duration extract------vvvvvvv 
    std::cout << " FINI " << duration_us.count() << " us" << std::endl; 
    return(static_cast<int>(errStr.size())); 
} 
+0

Time_tは時間単位を意味しません。 start_usは、読者に、この努力のために表示したい単位を単に思い出させる。時点1と2との間のこの同じ差は、duration_castからミリ秒(MS_t)、またはナノ秒(NS_t)でもよい。 –

1

std::chronoはタイマーではありません。ゼロに設定することはできません。関数zero()は、の値を0に戻すだけです。経過時間を取得するには、まず現在時刻を取得してから、何をする必要があれば何度もやり直してください。終了時刻から開始時刻を差し引く。例はhereです。