C++의 class의 연산자오버로딩 함수를 사용해서 STL, Vector에 넣고 Sort해보자
C++의 class의 연산자오버로딩 함수를 사용해서 STL, Vector에 넣고 Sort해보자

엄청제목이 길죠..
사실 간단합니다.
임의의 class를 선언하고. 이들을 비교할수 있는 연산자(operator)를 선언하면됩니다.
예제에서는 <,>를 선언했습니다.

이렇게 선언하면
---------------------------------
Tmp a, b;
if( a> b) cout << "a가 더커";
---------------------------------
이런 것이 오류가 없이 돌아갑니다.

그런데 이렇게 선언된 class를 vector나 list에 넣고 stl의 sort함수를 사용해서..
정렬을 하려고 할 때는 좀더 신경써야합니다.
일반적으로는
   bool operator > ( Tmp  tmp); 이렇게 operator를 해줘도 상관이 없습니다.
그러나 이 함수의 경우에는 조금 문제점(?)이 발생할 수 있습니다.
따라서    bool operator > ( const Tmp & tmp) const 와 같이 선언해서 사용해야 합니다.
여기서 const를 눈여겨봐야합니다 ^^..
(const는 검색해보세요^^....)

예)

class Tmp
{
public :
   bool operator > ( const Tmp & tmp) const
   {
         if( a > tmp.a) return true;
         return false;
   }
   bool operator < ( const Tmp & tmp) const
   {
         if( a < tmp.a) return true;
         return false;
   }
   int a;
   int b;
};


-------------------
vector< Tmp > VTmp;

VTmp.push_back(....);

sort( VTmp.begin(), VTmp.end();

끝... ^^


by 멋진상수 | 2009/09/24 12:14 | Tips | 트랙백 | 덧글(0)
트랙백 주소 : http://redcap.egloos.com/tb/1530951
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >