2012. 11. 27. 12:09 윈도우/소스

CArray qsort - CArray 를 퀵소트 해보자.

 

// 예를 들어 아래 클래스가 있다면

class CDataInfo
{
public:
 CDataInfo(){};
 virtual ~CDataInfo(){};
 CString strDate;
};

 

// 데이터 클래스의 리스트를 소트해보자

typedef CArray<CDataInfo, CDataInfo&> CDataList;

// 소트 비교 함수

typedef int (__cdecl *DATA_COMPARE_FN)(const void* elem1, const void* elem2);

int CDataInfo_Compare(const CDataInfo* p1, const CDataInfo* p2)
{
 ASSERT(p1);
 ASSERT(p2);

 return (int) (p2->strDate > p1->strDate); // Descennding
}

 

// 호출할 소팅 함수
static void SortDataList(CDataList& data, DATA_COMPARE_FN pfnCompare)
{
 CDataInfo* prgArray = data.GetData();
 qsort(prgArray, data.GetSize(), sizeof(CDataInfo), (DATA_COMPARE_FN)CDataInfo);
}

posted by townone