最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C/C++時間庫chrono的使用總結

 更新時間:2023年12月14日 10:28:25   作者:小謝sd  
std::chrono是C++標準庫中的一個組件,用于表示和處理時間,其功能就像是心理學中的感知系統(tǒng),它可以為我們捕捉、量化并操作抽象的時間概念,這就如同我們的大腦可以理解和感知周圍環(huán)境的時間流逝一樣,這種感知和理解能力是人類進行日?;顒铀匦璧?

在程序設計中,時間管理是一個核心概念,它不僅關系到程序的效率和性能,而且直接影響用戶體驗。C++作為一門高效的編程語言,提供了std::chrono庫,用于精確地處理和計算時間。這個庫的設計體現(xiàn)了程序員對時間流逝的敏感性,同時也揭示了編程中對精確度和性能的持續(xù)追求。

使用 <chrono> 庫的好處是可以以不同的精度測量時間,包括納秒、微秒、毫秒和秒。通過計算兩個時間點之間的時間間隔,可以精確地測量代碼執(zhí)行的時間。

std::chrono庫主要包含以下功能:

  • 時間點:表示特定的時間點,比如當前的時間。這如同人們通過記憶可以回憶起特定的時刻。
  • 時間段:表示時間的長度,比如1秒,1分鐘,1小時等。這如同人們能夠感知時間的流逝,理解"早","晚"等概念。
  • 時鐘:用于獲取當前的時間點,有三種類型的時鐘:system_clock,steady_clock和high_resolution_clock。這如同人們通過看表來知道現(xiàn)在的具體時間。

為了更好的理解這些功能,讓我們看一下下面的表格:

類名描述對應的心理學概念
std::chrono::system_clock系統(tǒng)的實際時間,可能會受到系統(tǒng)時間調整的影響外部環(huán)境對人的影響
std::chrono::steady_clock穩(wěn)定的時鐘,時間從不調整穩(wěn)定、可靠的心理狀態(tài)
std::chrono::high_resolution_clock提供最小的可表示的時間間隔細微的心理變化
std::chrono::time_point表示特定的時間點特定的記憶
std::chrono::duration表示時間的長度時間的感知

通過一個具體實例來逐步講解時間庫chrono的使用,實例如下:

  // 開始計時
  auto startTime = std::chrono::steady_clock::now();
  //自己定義的檢查答案的函數(shù),可忽略
  checkAnswers(problems);
  // 停止計時
  auto endTime = std::chrono::steady_clock::now();
  // 計算答題時間
  std::chrono::duration<double> elapsedSeconds = endTime - startTime;
  int elapsedMinutes = static_cast<int>(elapsedSeconds.count() / 60);
  int elapsedSecondsRemainder = static_cast<int>(elapsedSeconds.count()) % 60;
  std::cout << "Time taken: " << elapsedMinutes << " minutes " << elapsedSecondsRemainder << " seconds" << std::endl;

逐條語句講解:

開始或者停止計時的代碼

    // 開始計時
  auto startTime = std::chrono::steady_clock::now();
    // 停止計時
  auto endTime = std::chrono::steady_clock::now();

這段代碼使用了C++標準庫中的 <chrono> 頭文件中的時間庫,用于獲取開始計時時間并將其存儲在變量 startTime 中,獲取停止計時時間并將其存儲在變量 endTime 中。

下面是對該代碼的解釋:

  • std::chrono::steady_clocksteady_clock 是一個表示穩(wěn)定、遞增的時鐘,用于測量時間間隔。它提供了一個相對穩(wěn)定的時間基準,適用于測量較小時間間隔。
  • std::chrono::steady_clock::now()now()steady_clock 類的成員函數(shù),用于獲取當前的時間點。
  • auto startTime = std::chrono::steady_clock::now();:這行代碼使用 auto 關鍵字自動推導變量類型,將當前時間點的值賦給變量 startTime。由于 std::chrono::steady_clock::now() 返回的是一個時間點對象,編譯器通過自動類型推導將其分配給 startTime 變量。

計算答題時間的代碼

  // 計算答題時間
  std::chrono::duration<double> elapsedSeconds = endTime - startTime;
  int elapsedMinutes = static_cast<int>(elapsedSeconds.count() / 60);
  int elapsedSecondsRemainder = static_cast<int>(elapsedSeconds.count()) % 60;

這段代碼用于計算答題時間,并將其分解為分鐘和秒。

1.std::chrono::duration<double> elapsedSeconds = endTime - startTime;
這一行代碼計算 endTimestartTime 之間的時間差,并將結果存儲在 elapsedSeconds 變量中。elapsedSeconds 是一個 std::chrono::duration 類型的對象,用于表示持續(xù)的時間。通過將 endTime 減去 startTime,我們得到了這段時間的持續(xù)時間。

注:std::chrono::duration 是 C++ 標準庫中用于表示時間持續(xù)的類模板。std::chrono::duration 提供了一系列成員函數(shù)和運算符,用于對時間持續(xù)進行操作和計算。一些常用的成員函數(shù)和運算符包括:

  • count():返回持續(xù)時間的內部表示值(類型為 Rep)。
  • operator+、operator-:用于對兩個持續(xù)時間進行加法和減法運算。
  • operator*、operator/:用于將持續(xù)時間乘以或除以一個標量值。
  • operator==、operator!=、operator<、operator>:用于比較兩個持續(xù)時間的大小關系。

2.int elapsedMinutes = static_cast<int>(elapsedSeconds.count() / 60);
這一行代碼將持續(xù)時間轉換為以分鐘為單位的整數(shù)值。elapsedSeconds.count() 返回持續(xù)時間的秒數(shù),除以 60 可以得到分鐘數(shù)。使用 static_cast<int> 進行強制類型轉換,將浮點數(shù)結果轉換為整數(shù)。

注:static_cast 是 C++ 中的一種類型轉換操作符,用于進行靜態(tài)類型轉換(static_cast)。

靜態(tài)類型轉換是一種在編譯時進行的類型轉換,它允許將一個類型轉換為另一個相關類型,前提是這兩個類型之間存在某種類型轉換的關系。

static_cast 可以用于以下幾種轉換:

  • 隱式類型轉換:static_cast 可以將一種算術類型轉換為另一種算術類型,如將 int 轉換為 double、將 float 轉換為 int 等。
  • 類層次轉換:static_cast 可以在類層次結構中進行向上轉型(upcast)和向下轉型(downcast),但在向下轉型時需要注意安全性,因為 static_cast 不提供運行時類型檢查。如果向下轉型是不安全的,應該使用 dynamic_cast 進行動態(tài)類型轉換。
  • 指針類型轉換:static_cast 可以在指針類型之間進行轉換,包括將派生類指針轉換為基類指針(向上轉型)和將基類指針轉換為派生類指針(向下轉型)。在指針轉換時,編譯器不會進行運行時類型檢查,因此需要確保轉換是安全的。

引用類型轉換:static_cast 可以在引用類型之間進行轉換,類似于指針類型轉換。轉換時需要注意類型的兼容性和安全性。

3.int elapsedSecondsRemainder = static_cast<int>(elapsedSeconds.count()) % 60;
這一行代碼計算以秒為單位的剩余時間。elapsedSeconds.count() 返回持續(xù)時間的秒數(shù),使用 static_cast<int> 將其轉換為整數(shù)。然后,通過取模運算符 % 將其對 60 取余,得到不足一分鐘的剩余秒數(shù)。 

到此這篇關于C/C++時間庫chrono的使用總結的文章就介紹到這了,更多相關C++時間庫chrono內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++11新特性之右值引用與完美轉發(fā)詳解

    C++11新特性之右值引用與完美轉發(fā)詳解

    C++11標準為C++引入右值引用語法的同時,還解決了一個短板,即使用簡單的方式即可在函數(shù)模板中實現(xiàn)參數(shù)的完美轉發(fā)。本文就來講講二者的應用,需要的可以參考一下
    2022-09-09
  • C++線程中幾類鎖的詳解

    C++線程中幾類鎖的詳解

    這篇文章主要為大家介紹了C++線程中幾類鎖,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • 詳解C語言學習記錄之指針

    詳解C語言學習記錄之指針

    關于指針,其是C語言的重點,C語言學的好壞,其實就是指針學的好壞。其實指針并不復雜,學習指針,要正確的理解指針,本片文章能給就來學習一下
    2021-11-11
  • Qt 中集成mqtt協(xié)議的使用方法

    Qt 中集成mqtt協(xié)議的使用方法

    文章介紹了如何在工程中引入qmqtt庫,并通過聲明一個單例類來暴露訂閱到的主題數(shù)據(jù),本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2025-02-02
  • c++ builder TreeView控件節(jié)點遍歷代碼

    c++ builder TreeView控件節(jié)點遍歷代碼

    這篇文章介紹了c++ builder TreeView控件節(jié)點遍歷代碼,有需要的朋友可以參考一下
    2013-09-09
  • C語言判斷回文數(shù)的小例子

    C語言判斷回文數(shù)的小例子

    這篇文章主要介紹了C語言判斷回文數(shù)的小例子,有需要的朋友可以參考一下
    2014-01-01
  • C語言實例之雙向鏈表增刪改查

    C語言實例之雙向鏈表增刪改查

    雙向鏈表(Doubly Linked List)是一種常見的數(shù)據(jù)結構,在單鏈表的基礎上增加了向前遍歷的功能,與單向鏈表不同,雙向鏈表的每個節(jié)點除了包含指向下一個節(jié)點的指針外,還包含指向前一個節(jié)點的指針,本文給大家介紹了C語言中雙向鏈表的增刪改查
    2023-08-08
  • C語言SetConsoleCursorInfo函數(shù)使用方法

    C語言SetConsoleCursorInfo函數(shù)使用方法

    這篇文章介紹了C語言SetConsoleCursorInfo函數(shù)的使用方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • Arduino控制舵機詳解 附代碼

    Arduino控制舵機詳解 附代碼

    rduino是一款便捷靈活、方便上手的開源電子原型平臺,它構建于開放原始碼simple I/O介面版,并且具有使用類似Java、C語言的Processing/Wiring開發(fā)環(huán)境,這篇文章主要介紹了Arduino控制舵機詳解(含代碼),需要的朋友可以參考下
    2023-05-05
  • C++中string轉換為char*類型返回后亂碼問題解決

    C++中string轉換為char*類型返回后亂碼問題解決

    這篇文章主要介紹了C++中string轉換為char*類型返回后亂碼問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07

最新評論

芦山县| 开远市| 微博| 鄂伦春自治旗| 牟定县| 皋兰县| 玛纳斯县| 当涂县| 夏津县| 耒阳市| 百色市| 专栏| 广州市| 崇阳县| 隆化县| 衡山县| 东乌| 富源县| 西华县| 新巴尔虎左旗| 辽宁省| 台中县| 四会市| 庄河市| 奈曼旗| 平定县| 原平市| 澜沧| 右玉县| 类乌齐县| 江西省| 慈利县| 原阳县| 郴州市| 大同市| 阿勒泰市| 桐梓县| 扬州市| 北宁市| 惠东县| 靖边县|