1. 程式人生 > 其它 >C++11 Chrono 庫 詳解

C++11 Chrono 庫 詳解

良心的C++11改進了落後的ctime庫,為我們提供了一個更為強大的chrono庫

匯入很簡單,只需要一行程式碼:

#include <chrono>

之後,您就可以愉快的使用chrono庫了!本篇blog就到這裡,下次再見!


1. 首先是最基本的Ratio 與 Durations

std::chrono::ratio 是一種用來表示有理數分數的東西,不過它的功能僅限於把分子和分母約分到最簡

template<std::intmax_t Num, std::intmax_t Denom = 1> class ratio;

其中Num表示分子,Demon表示分母

這個類有兩個成員,一個是num,一個是den,分別表示約分後的分子和分母

示例程式:

#include <chrono>

int main()
{
    ratio<3, 9> a;
    printf("%ld %ld\n", a.num, a.den);
}

輸出為:1, 3 (約分後的分子分母)

std::chrono::duration 是表示一段時間間隔的資料型別,比如兩個小時,12.88秒,半個時辰,一炷香的時間等等,只要能換算成秒即可。

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

其中,Rep表示 想要儲存的數值型別,比如int, float, double, long long

Period是ratio型別,用來表示 時間單位,比如second, milisesecond

C++考慮到您懶得寫程式碼,於是預定義了一些常用的ratio型別:

名稱(定義於名稱空間std::chrono) 中文釋義 定義
nanoseconds 納秒
duration</*至少 64 位的有符號整數型別*/, std::nano>
其中,std::nano 等價於 std::ratio<1, 1000000000>
microseconds 微秒
duration</*至少 55 位的有符號整數型別*/, std::micro>
其中,std::micro 等價於 std::ratio<1, 1000000>
milliseconds 毫秒
duration</*至少 45 位的有符號整數型別*/, std::milli>
其中,std::milli 等價於 std::ratio<1, 1000>
seconds
duration</*至少 35 位的有符號整數型別*/>
minutes 分鐘
duration</*至少 29 位的有符號整數型別*/, std::ratio<60>>
hours 小時
duration</*至少 23 位的有符號整數型別*/, std::ratio<3600>>