C++ 庫 - <ratio>



C++ 中的<ratio>庫提供了一種方便的方式來在編譯時處理有理數。它用於根據分子和分母定義和操作分數值。它用於需要在編譯階段計算和最佳化分數運算的場景,確保沒有執行時開銷。

<ratio>庫被廣泛用於與其他庫(如<chrono>)結合處理時間單位。下面列出了常用的C++ <ratio>函式。

包含 <ratio> 標頭檔案

要在 C++ 程式中包含 <ratio> 標頭檔案,可以使用以下語法。

#include <ratio>

<ratio> 標頭檔案的函式

以下是 <ratio> 標頭檔案中的所有函式列表。

算術運算

算術運算指的是在編譯時執行基本數學運算的能力。下面列出了常用的 C++ <ratio> 算術函式及其描述。

序號 函式及描述
1 ratio_add

用於新增兩個 ratio 物件。

2 ratio_subtract

用於減去兩個 ratio 物件。

3 ratio_multiply

用於乘以兩個 ratio 物件。

4 ratio_divide

用於除以兩個 ratio 物件。

新增兩個比率

在下面的示例中,我們將宣告兩個比率並獲取這兩個比率之和作為輸出。

#include <iostream>
#include <ratio>
int main() {
   using x1 = std::ratio < 2, 4 > ;
   using x2 = std::ratio < 1, 4 > ;
   using a = std::ratio_add < x1, x2 > ;
   std::cout << "Result : " << a::num << "/" << a::den << std::endl;
   return 0;
}

輸出

以下是上述程式碼的輸出 -

Result : 3/4

比較

<ratio>庫提供了一種方法,可以使用以下列出的比較函式在編譯時比較不同的 std::ratio 型別,以及它們的描述。

序號 函式及描述
1 ratio_equal

用於比較兩個 ratio 物件是否相等。

2 ratio_not_equal

用於比較兩個 ratio 物件是否不相等。

3 ratio_less

用於比較兩個 ratio 物件是否小於。

4 ratio_less_equal

用於比較兩個 ratio 物件是否小於或等於。

5 ratio_greater

用於比較兩個 ratio 物件是否大於。

6 ratio_greater_equal

用於比較兩個 ratio 物件是否大於或等於。

比較兩個比率

考慮以下示例,我們將宣告兩個比率並進行比較。

#include <iostream>
#include <ratio>
int main() {
   using a1 = std::ratio < 1, 3 > ;
   using a2 = std::ratio < 3, 9 > ;
   if (std::ratio_equal < a1, a2 > ::value) {
      std::cout << "Both Ratios are Equal" << std::endl;
   } else {
      std::cout << "Both Ratios are Not Equal" << std::endl;
   }
   return 0;
}

輸出

以上程式碼的輸出如下 -

Both Ratios are Equal
廣告