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
广告