概覽
std::ratio
定義在檔案中,提供了編譯期的比例計算功能。為
std::chrono::duration
提供基礎服務。
類定義std::ratio是乙個模板類,關鍵**摘錄如下(格式有調整):
template
1>
struct ratio
;
第乙個引數_nx
代表了分子,第二個引數_dx
代表了分母。
num是計算後的分子,den是計算後的分母。在duration轉換的時候會用到這兩個值。
注:這裡的計算是指約分,可以看到傳入的分子和分母都除以了最大公約數。
num是numerator的縮寫,表示分子。
den是denominator的縮寫,表示分母。
預定義ratio
為了方便**的書寫,標準庫提供了如下定義:
type definition
yocto std::ratio<1,
1000000000000000000000000
>
,if std::intmax_t can represent the denominator
zepto std::ratio<1,
1000000000000000000000
>
,if std::intmax_t can represent the denominator
atto std::ratio<1,
1000000000000000000
>
femto std::ratio<1,
1000000000000000
>
pico std::ratio<1,
1000000000000
>
nano std::ratio<1,
1000000000
>
micro std::ratio<1,
1000000
>
milli std::ratio<1,
1000
>
centi std::ratio<1,
100>
deci std::ratio<1,
10>
deca std::ratio<10,
1>
hecto std::ratio<
100,
1>
kilo std::ratio<
1000,1
>
mega std::ratio<
1000000,1
>
giga std::ratio<
1000000000,1
>
tera std::ratio<
1000000000000,1
>
peta std::ratio<
1000000000000000,1
>
exa std::ratio<
1000000000000000000,1
>
zetta std::ratio<
1000000000000000000000,1
>
,if std::intmax_t can represent the numerator
yotta std::ratio<
1000000000000000000000000,1
>
,if std::intmax_t can represent the numerator
應用
如果想表示1/5,那麼可以這樣寫std::ratio<1, 5>。
回想我們在學習std::chrono::duration中遇到到的milli的定義:
typedef ratio<1, 1000> milli;,表示一千分之一,因為約定了基本計算單位是秒,所以milli表示一千分之一秒。
示例**
#include
#include
typedef std::chrono::duration<
float
, std::ratio<3,
1>
> three_seconds;
typedef std::chrono::duration<
float
, std::ratio<1,
10>
> one_tenth_seconds;
intmain()
參考資料
vs原始碼
cppreference
原 C 新標準之std ratio
原 總結ratio std ratio定義在檔案中,提供了編譯期的比例計算功能。為std chrono duration提供基礎服務。std ratio是乙個模板類,關鍵 摘錄如下 格式有調整 template struct ratio 第乙個引數 nx代表了分子,第二個引數 dx代表了分母。num...
原 C 新標準之std ratio
原 總結ratio std ratio定義在檔案中,提供了編譯期的比例計算功能。為std chrono duration提供基礎服務。std ratio是乙個模板類,關鍵 摘錄如下 格式有調整 template struct ratio 第乙個引數 nx代表了分子,第二個引數 dx代表了分母。num...
原 C 新標準之std thread
原 總結c 11 thread 更多參考資料 從c 11開始提供了執行緒的支援,終於可以方便的編寫跨平台的執行緒 了。除了std thread類,還提供了許多其它便利同步的機制,本篇總結是c 11學習筆記系列的首篇總結。std thread定義在中,提供了方便的建立執行緒的功能。class thre...