C 新標準之std ratio

2021-10-12 04:58:36 字數 2363 閱讀 7081

概覽

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...