如何使用qsort对CTypedPtrList进行排序?

时间:2017-08-30 15:36:08

标签: mfc

我将CTypedPtrList转换为指向对象的指针CArray。

为此,我在下面添加了代码。

typedef CTypedPtrList<CPtrList, CMyList*> CTagInfoList;

CMyInfoList* myList;

CArray<CMyList* ,CMyList*> arr;

,,

,,

POSITION pos = myList->GetHeadPosition();
while( pos != NULL ){

CMyList* pObj = (CMyList*)myList->GetNext(pos);

arr.Add(pObj);

}

如何使用指向对象的指针CArray调用qsort。

1 个答案:

答案 0 :(得分:0)

您可以这样做:

qsort(static_cast<void*>(&arr[0]), arr.GetSize(), sizeof(CMyList*), CompareFunction);

其中CompareFunction是一个静态方法:

// header:
static int CompareFunction(const void* a, const void* b);
// cpp

int CYourClass::CompareFunction(const void* a, const void* b)
{
CMyList* pA = static_cast<CMyList*>(a);
CMyList* pB = static_cast<CMyList*>(b);
return pA->Compare(*pB); // Compare is a comparision CMyList* criteria
}

另外,您可以查看qsort参考:http://www.cplusplus.com/reference/cstdlib/qsort/