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);
}