이 글에서는 C++ STL에 포함된 ratio_not_equal 템플릿의 동작 방식, 문법, 그리고 실제 예제를 통해 어떻게 활용할 수 있는지 자세히 알아보겠습니다.
ratio_not_equal 템플릿이란?
ratio_not_equal은 C++ STL에 내장된 템플릿으로, <ratio> 헤더 파일에 정의되어 있습니다. 이 템플릿은 두 비율(ratio)이 서로 같지 않은지, 즉 불일치 여부를 비교하는 데 사용됩니다. 두 개의 매개변수를 받아 해당 비율들이 같지 않은지 검사하며, 예를 들어 1/2와 3/9처럼 서로 다른 값을 가진 비율이 주어지면 참(true)으로 판정합니다. 즉, 두 비율이 불일치할 때 true를 반환합니다.
따라서 두 비율의 불일치 여부를 확인해야 할 때, 복잡한 비교 로직을 직접 작성하는 대신 이 템플릿을 활용하면 코드를 훨씬 간결하고 안전하게 작성할 수 있습니다.
문법(Syntax)
template <class ratio1, class ratio2> ratio_not_equal;
매개변수(Parameters)
이 템플릿은 다음과 같은 매개변수를 받습니다.
ratio1, ratio2 − 서로 같지 않은지 확인하고자 하는 두 개의 비율입니다.
반환 값(Return Value)
두 비율이 서로 다르면 true를 반환하고, 두 비율이 같으면 false를 반환합니다.
입력 예시 1
typedef ratio<3, 6> ratio1; typedef ratio<1, 2> ratio2; ratio_not_equal<ratio1, ratio2>::value;
출력 결과 1
false
3/6과 1/2는 약분하면 동일한 값이므로 false가 반환됩니다.
입력 예시 2
typedef ratio<3, 9> ratio1; typedef ratio<1, 2> ratio2; ratio_not_equal<ratio1, ratio2>::value;
출력 결과 2
true
3/9와 1/2는 서로 다른 값이므로 true가 반환됩니다.
예제 1: 두 비율이 다른 경우
#include <iostream>
#include <ratio>
using namespace std;
int main(){
typedef ratio<2, 5> R_1;
typedef ratio<1, 3> R_2;
// 두 비율이 같은지 확인
if (ratio_not_equal<R_1, R_2>::value)
cout<<"Ratio 1 and Ratio 2 aren't equal";
else
cout<<"Ratio 1 and Ratio 2 are equal";
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Ratio 1 and Ratio 2 aren't equal
2/5와 1/3은 서로 다른 비율이므로 ratio_not_equal이 true를 반환하여 불일치 메시지가 출력됩니다.
예제 2: 두 비율이 같은 경우
#include <iostream>
#include <ratio>
using namespace std;
int main(){
typedef ratio<2, 5> R_1;
typedef ratio<2, 5> R_2;
// 두 비율이 같은지 확인
if (ratio_not_equal<R_1, R_2>::value)
cout<<"Ratio 1 and Ratio 2 aren't equal";
else
cout<<"Ratio 1 and Ratio 2 are equal";
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Ratio 1 and Ratio 2 are equal
두 비율이 모두 2/5로 동일하므로 ratio_not_equal이 false를 반환하여 일치 메시지가 출력됩니다.