STL List 에서 기본 자료형이 아닌 클래스 또는 구조체 정렬 하기.

class CObject
{
public:
        int        GetCurX(void);
        int        GetCurY(void) const;
};

list g_stlObjectList;

이런 식으로 직접 만든 클래스를 STL List에 사용하고
클래스 맴버변수에 따른 정렬을 하고 싶다면 operator() 를 사용해서
비교 함수를 재정의 해주시면 됩니다.

struct stLISTsort
{
        bool operator() (const CObject *pObject1, const CObject *pObject2) const
        {
                if ( pObject1->GetCurY() < pObject2->GetCurY() )
                        return true;

                return false;
        }
};

크다 작다 TRUE/FALSE 로 넣어주시면 됩니다.


g_stlObjectList.sort(stLISTsort());

그리고 이와 같이 sort 호출시 재정의된 구조체 또는 클래스를 넣어서
호출하면 위의 연산자로써 정렬을 하게 됩니다.


이 방법 외에도 여러가지 방법이 있습니다.


반응형

+ Recent posts