Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ ratio_less() 함수: 두 비율을 비교하는 방법

C++의 ratio_less()는 <ratio> 헤더에 포함된 템플릿 기능으로, 두 개의 비율(ratio)을 비교하는 역할을 합니다. 첫 번째 비율(ratio1)이 두 번째 비율(ratio2)보다 작은지 검사하며, 그 결과를 불리언 상수 value로 반환합니다. ratio1이 ratio2보다 작으면 true(정수 1)를, 그렇지 않으면 false(정수 0)를 반환합니다.

예시

입력: 1/3과 1/2
출력: 1/3은 1/2보다 작습니다.

입력: 1/4와 1/8
출력: 1/4는 1/8보다 작지 않습니다.

문법

template <class ratio1, class ratio2> ratio_less

매개변수

이 템플릿은 비교 대상이 되는 두 개의 템플릿 매개변수를 받습니다.

  • ratio1: 비교 기준이 되는 첫 번째 비율
  • ratio2: ratio1과 비교되는 두 번째 비율

동작 방식

ratio1의 값이 ratio2의 값보다 작으면 불리언 값 true, 즉 정수 1을 반환하고, 그렇지 않으면 false, 즉 정수 0을 반환합니다.

참고로 ratio_less는 일반적인 런타임 함수가 아니라 컴파일 시간(compile-time)에 평가되는 클래스 템플릿입니다. 따라서 프로그램이 실행되기 전에 비교 결과가 결정되며, 그 결과는 ::value 멤버를 통해 접근합니다.

typedef란?

typedef는 데이터 타입에 새로운 이름을 부여하는 키워드입니다. 이 프로그램에서는 비율을 선언할 때 typedef를 사용합니다. typedef는 타입 이름 대신 어디서든 사용할 수 있는 별칭(alias)을 만들어 주며, 한 줄에 여러 개의 식별자를 선언할 수도 있고 배열, 함수 타입, 포인터, 참조, 클래스 타입 등을 선언하는 데에도 활용할 수 있습니다.

프로그램의 처리 순서

  • 먼저 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 << "1/3은 1/2보다 작습니다.";
    else
        cout << "1/3은 1/2보다 작지 않습니다.";

    return 0;
}

출력

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

1/3은 1/2보다 작습니다.

함께 알아두면 좋은 관련 템플릿

<ratio> 헤더에는 ratio_less 외에도 비교용 템플릿이 여러 개 제공됩니다.

  • ratio_greater: ratio1이 ratio2보다 큰지 검사
  • ratio_equal: 두 비율이 같은지 검사
  • ratio_not_equal: 두 비율이 다른지 검사
  • ratio_less_equal: ratio1이 ratio2보다 작거나 같은지 검사
  • ratio_greater_equal: ratio1이 ratio2보다 크거나 같은지 검사