C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++のratio_less()関数とは?2つの比を比較する方法を解説

C++のratio_less()関数とは

本記事では、C++標準ライブラリに含まれるratio_less()関数の動作について詳しく解説します。

ratio_less()関数は、2つの比(ratio)をコンパイル時に比較し、ratio1の値がratio2の値より小さいかどうかを判定するテンプレートです。判定結果はブール定数「value」として取得でき、ratio1がratio2より小さい場合にはtrue(整数値の1)、そうでない場合にはfalse(整数値の0)が返ります。

使用例

入力: 1/3 と 3/9
出力: 1/3 は 3/9 より小さくない(両者は等しいため)

入力: 1/4 と 1/8
出力: 1/4 は 1/8 より小さくない

構文

template <class ratio1, class ratio2> ratio_less

パラメータ

このテンプレートは、比較対象となる2つのテンプレート引数を受け取ります。1つ目が比較される側のratio1、2つ目が比較する相手のratio2です。

動作の説明

ratio1の値がratio2の値より小さい場合、このテンプレートはtrue(整数値の1)を返します。小さくない場合(等しい場合や大きい場合を含む)は、false(整数値の0)を返します。

typedefについて

typedefは、既存のデータ型に新しい名前(別名)を付けるためのキーワードです。本プログラムでは、比を宣言するためにtypedefを使用しています。typedefで作成した別名は、プログラム内のどこでも元の型名の代わりに使えます。また、同じ行で複数の識別子を宣言できるだけでなく、配列型・関数型・ポインタ・参照・クラス型などの宣言にも利用できます。

プログラムの流れ

  • まず2つの比(ratio)をtypedefで宣言します。

  • それぞれの比に分子と分母の値を設定します。

  • ratio1の値がratio2の値より小さいかどうかを判定します。

  • この判定にはratio_lessを使用します。

サンプルコード

// ratio_lessの動作を確認するC++コード
#include <iostream>
#include <ratio>
using namespace std;

int main() {
    typedef ratio<1, 3> ratio1;
    typedef ratio<1, 2> ratio2;

    if (ratio_less<ratio1, ratio2>::value)
        cout << "ratio1はratio2より小さい";
    else
        cout << "ratio1はratio2より小さくない";

    return 0;
}

実行結果

上記のコードを実行すると、次のような出力が得られます。

1/3 は 1/2 より小さい

この例では、1/3 ≒ 0.333、1/2 = 0.5 であるため、ratio_less<ratio1, ratio2>::value はtrueとなり、「ratio1はratio2より小さい」が出力されます。一方、仮に1/5 = 0.2 と比較した場合には、1/3の方が大きいためfalseとなり、「ratio1はratio2より小さくない」と表示されます。

  1. C++のlog()関数とは?自然対数を求める方法をわかりやすく解説

    C++の標準ライブラリには、数学的な計算を行うための便利な関数が多数用意されています。その中でもlog()関数は、数値の自然対数(ネイピア数 e を底とする対数)を求めるために使用される重要な関数です。log()関数の基本情報C/C++のライブラリ関数 double log(double x) は、引数 x の自然対数(底が e の対数)を返します。この関数を使用するには、ヘッダーファイル <cmath> をインクルードする必要があります。関数の宣言double log(double x)パラメータと戻り値パラメータ: x は浮動小数点型(double)の値です。自然対数を求めたい

  2. C++のswap()関数とは?2つの変数の値を入れ替える方法をサンプルコード付きで解説

    swap()関数とは C++のswap()関数は、2つの値を入れ替える(交換する)ための関数です。この関数を利用すれば、一時的な第三の変数を自分で用意することなく、2つの変数の値を簡単に入れ替えることができます。 swap()関数の構文 void swap(int variable_name1, int variable_name2); 変数に値を代入してswap()関数に渡した場合、関数内では値の入れ替えが行われますが、呼び出し元の実際の変数の値は変わりません。これは、引数が「値渡し」で渡されるためです。実際の変数の値を入れ替えたい場合は、後述する「参照渡し」を使用します。 例1:s