상등관계와 동등관계의 차이를 파악하자

상등관계는 operator= 에 의해서 비교되는 것으로 두 객체가 나타낸는 값이 동일한지를 판단한다.
동등관계는 operator< 에 의해서 비교되는 것으로 두 객체가 다른가를 판단한다.
위의 동등을 코드로 표현해 보면

if( !(w1<w2) && !(w2<w1) )
{
// 동등하다
}
else
{
// 동등하지 않다.
}
의 관계를 같는다고 할수 있다. 일반적으로 연관 컨테이너에서 사용되는 비교함수는 operator< 가 아니라 less(EffeciveSTL39참조)를 사용한다. 실제로 STL의 연관 컨테이너는 멤버함수를 통해 자신의 정렬용 술어구조를 내어주므로, 앞의 표현식은 다음과 같이 표현된다.(c는 연관 컨테이너 객체의 이름)
!c.key_comp()(x,y) && !c.key_comp()(y,x)
대소문자를 무시하는 연관컨테이너 작성법과 연관컨테이너에서 상등성과 동등성의 연산에 관한 문제는 책을 참조.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다