2017-08-01 34 views
-4

你好,我有一個std :: chrono的問題我做插入的包括。我嘗試用Start函數將時間重置爲零。std :: chrono的問題:重置時間

我的功能到的.cpp

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

重置時間回到大爆炸?沒有。

這個努力只是計算兩個時間點之間的差異。這個簡單的想法從現在開始()。

#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

相關問題