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

c++11 Chrono時間庫的使用小結(jié)

 更新時間:2025年11月28日 09:51:15   作者:~一葉、  
本文主要介紹了c++11 Chrono時間庫的使用小結(jié),包括duration、clock和time_point,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1. 持續(xù)時間 duration

template<class Rep, class Period = ratio<1>>
class duration;

class Rep: 滴答數(shù)
class Period: 滴答周期,默認1秒

1) 常用方法

count / zero / min / max
支持算術(shù)運算 + - * / % ++ – += -= *= /= %= (不同的Period之間會自動轉(zhuǎn)換)

2) 示例

duration<long, ratio<60>> d1(2);  //2分鐘
duration<long, ratio<1>>  d2(30); //30秒
duration<double, ratio<60>> d3 = d1+d2; //2.5分
count << d3.count() << "minutes" << endl;

3) 標準定義

//X 64 bits表示:有符號整數(shù)類型,且位數(shù)至少為64位
typedef duration<X 64 bits, nano>  nanoseconds; //納秒
typedef duration<X 55 bits, micro> microseconds; //微秒
typedef duration<X 45 bits, milli> milliseconds; //毫秒 
typedef duration<X 35 bits>        seconds; //秒 
typedef duration<X 29 bits, ratio<60>>    minutes; //分
typedef duration<X 23 bits, ratio<3600>>  hours; //時

//例
auto t = hours(1) + minutes(2) + seconds(45);
count << seconds(t).count() << endl;

2. 時鐘 clock

  • system_clock 系統(tǒng)實時時鐘的真實時間
  • steady_clock time_point絕不遞減的時鐘
  • high_resolution_clock 高精度時鐘

1) 常用接口

// 均為靜態(tài)接口
now()  //獲取類型為time_point的當前時間點
to_time_t()  //將time_point轉(zhuǎn)換為time_t類型
from_time_t()  //將time_t轉(zhuǎn)換為time_point類型

localtime可將time_t類型轉(zhuǎn)換為tm表示的本地時間

2) 示例

//獲取當前時間
#include <time.h>      // time_t, locaktime, tm
#include <iomanip>     // put_time
system_clock::time_point tpoint = system_clock::now();
time_t tt = system_clock::to_time_t(tpoint);
tm* t = locaktime(&tt);
cout << put_time(t, "%H:%M:%S") << endl;
//計算代碼的執(zhí)行時間
auto start = system_clock::now();
// ... to do something
auto end = system_clock::now();
auto diff = end - start;
cout << duration<double, milli>(diff).count() << "ms" << endl;

3. 時點 time_point

  • time_point是一個時間點,存儲相對于紀元(1970/01/01)的一個duration。
  • time_since_epoch() 返回當前時間點到紀元的duration。
  • 每一個time_point都關(guān)聯(lián)一個clock,創(chuàng)建時需指定clock作為模板參數(shù)。

1) 構(gòu)造函數(shù)

time_point();           //通過duration::zero初始化表示關(guān)聯(lián)clock的紀元
time_point(const duration& d); //通過duration初始化表示紀元+d
template<class Duration2>
time_point(const time_point<clock, Duration2>& t); //通過t.time_since_epoch初始化

2) 示例

time_point<steady_clock> tp1;
tp1 += minutes(10);
auto d1 = tp1.time_since_epoch();
duration<double> d2(d1);
cout << d2.count() << "seconds" << endl;

獲取時間差

#include <chrono>
#include <thread>


auto begin   = std::chrono::high_resolution_clock::now(); //起始
std::this_thread::sleep_for(std::chrono::milliseconds(800));//運行時長
auto end   = std::chrono::high_resolution_clock::now();//結(jié)束

//第一種 使用duration_cast計算
auto duration1 = std::chrono::duration_cast<std::chrono::seconds>(end - begin);
auto duration2 = std::chrono::duration_cast<std::chrono::milliseconds>(end - begin);
auto duration3 = std::chrono::duration_cast<std::chrono::microseconds>(end - begin);
auto duration4 = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin);

std::cout << duration1.count() << std::endl; //本機測試結(jié)果: 0
std::cout << duration2.count() << std::endl; //本機測試結(jié)果: 812
std::cout << duration3.count() << std::endl; //本機測試結(jié)果: 812698
std::cout << duration4.count() << std::endl; //本機測試結(jié)果: 812698500

//第二種 使用durantion
std::chrono::duration<double, std::ratio<1, 1>> elapsed1 = end - begin;
std::chrono::duration<double, std::ratio<1, 1000>> elapsed2 = end - begin;
std::chrono::duration<double, std::ratio<1, 1000000>> elapsed3 = end - begin;
std::chrono::duration<double, std::ratio<1, 1000000000>> elapsed4 = end - begin;

std::cout << elapsed1.count() << std::endl; //本機測試結(jié)果: 0.812698
std::cout << elapsed2.count() << std::endl; //本機測試結(jié)果: 812.698
std::cout << elapsed3.count() << std::endl; //本機測試結(jié)果: 812698
std::cout << std::fixed << std::setprecision(0) << elapsed4.count() << std::endl; //本機測試結(jié)果: 812698500

獲取時間戳

//此處要用system_clock
auto now = std::chrono::system_clock::now();

//下面用到2種轉(zhuǎn)換方式,一種time_point_cast,一種duration_cast

// 獲取時間戳,單位為毫秒
auto ms = std::chrono::time_point_cast<std::chrono::milliseconds>(now).time_since_epoch().count();
// 輸出毫秒時間戳
std::cout << "Milliseconds timestamp: " << ms << std::endl;

// 獲取時間戳,單位為秒
auto sec = std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch()).count();
// 輸出秒時間戳
std::cout << "Seconds timestamp: " << sec << std::endl;

到此這篇關(guān)于c++11 Chrono時間庫的使用小結(jié)的文章就介紹到這了,更多相關(guān)c++11 Chrono時間庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++或Go求矩陣里的島嶼的數(shù)量詳解

    C++或Go求矩陣里的島嶼的數(shù)量詳解

    這篇文章主要介紹了C++和go實現(xiàn)LeetCode(200.島嶼的數(shù)量),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • VSCODE調(diào)試RDKit內(nèi)核的方法步驟(C++)

    VSCODE調(diào)試RDKit內(nèi)核的方法步驟(C++)

    本文主要介紹了VSCODE調(diào)試RDKit內(nèi)核的方法步驟,這個過程可以分為三個部分:安裝 RDKit 所需環(huán)境,安裝 VSCode 相應(yīng)插件, 寫調(diào)試代碼編譯,感興趣的可以了解一下
    2021-08-08
  • C語言用數(shù)組實現(xiàn)反彈球消磚塊

    C語言用數(shù)組實現(xiàn)反彈球消磚塊

    這篇文章主要為大家詳細介紹了C語言用數(shù)組實現(xiàn)反彈球消磚塊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 使用C++設(shè)計開發(fā)一個功能完善的多進程管理器

    使用C++設(shè)計開發(fā)一個功能完善的多進程管理器

    一個健壯的多進程管理器不僅需要能夠按照依賴順序啟動進程,還要能夠優(yōu)雅地停止進程,并在進程意外崩潰時自動重啟,本文將詳細介紹如何使用C++開發(fā)一個功能完善的多進程管理器,需要的可以了解下
    2025-10-10
  • c++程序字符型的實例講解

    c++程序字符型的實例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于
    2020-02-02
  • Qt實現(xiàn)窗口陰影效果的三種方法

    Qt實現(xiàn)窗口陰影效果的三種方法

    夫界面設(shè)計之道,光影為魂,一窗一影,皆可訴說著數(shù)字世界的深度與層次,Qt作為跨平臺GUI之翹楚,其陰影效果實現(xiàn)可謂大巧若拙,大智若愚,因此本文給大家介紹了Qt實現(xiàn)窗口陰影效果的三種方法,需要的朋友可以參考下
    2026-01-01
  • C語言中全局變量,局部變量,靜態(tài)局部變量的區(qū)分方式

    C語言中全局變量,局部變量,靜態(tài)局部變量的區(qū)分方式

    這篇文章主要介紹了C語言中全局變量,局部變量,靜態(tài)局部變量的區(qū)分方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 詳解C++中string的用法和例子

    詳解C++中string的用法和例子

    string是C++標準庫的一個重要的部分,主要用于字符串處理。這篇文章主要介紹了C++ string的用法和例子,需要的朋友可以參考下
    2018-05-05
  • C語言實現(xiàn)簡易停車場管理系統(tǒng)

    C語言實現(xiàn)簡易停車場管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡易停車場管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++中頭文件和源文件詳細介紹

    C++中頭文件和源文件詳細介紹

    這篇文章主要介紹了C++中頭文件和源文件詳細介紹的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評論

昌邑市| 衡东县| 松阳县| 长治县| 宁津县| 许昌市| 阳新县| 聂拉木县| 庆元县| 镇江市| 宁武县| 宽甸| 乐陵市| 临沭县| 左云县| 康马县| 随州市| 文水县| 疏勒县| 芷江| 蕉岭县| 定襄县| 绥阳县| 连江县| 陵川县| 邓州市| 若羌县| 如皋市| 金川县| 平遥县| 应城市| 玛多县| 苏尼特左旗| 从化市| 永济市| 林州市| 健康| 寿光市| 拉孜县| 承德县| 铜陵市|