2017-08-30 2 views
0

J'ai converti CTypedPtrList en CArray de pointeurs à l'objet.Comment trier CTypedPtrList en utilisant qsort?

Pour cela j'ai ajouté le code ci-dessous. Comment appeler qsort en utilisant CArray de pointeurs sur l'objet.

+1

double possible de [ Comment trier un CArray d'un type défini par l'utilisateur?] (Https://stackoverflow.com/questions/244487/how-do-i-sort-a-carray-of-a-user-defined-type) –

+1

I 'ai été programmation avec MFC pour aller sur vingt ans. Je n'ai presque jamais utilisé un conteneur Microsoft. S'il vous plaît envisager de passer à la [bibliothèque standard C++] (https://en.wikipedia.org/wiki/C%2B%2B_Standard_Library) pour votre travail. – lakeweb

Répondre

0

Vous pouvez faire quelque chose comme ceci:

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

où compareFunction est une méthode statique:

// 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 
} 

De plus, vous jetez un coup d'oeil sur la référence qsort: http://www.cplusplus.com/reference/cstdlib/qsort/