000
27.09.2003, 17:13 Uhr
~cuara
Gast
|
Hallo zusammen,
ich habe ein Array, der so aussieht:
C++: |
struct Array { float f; int a; int b; int c; }; CArray<Array, Array> m_arArray;
|
Ich muss das Array nach dem ersten Element, also float, sortieren. Mit Bubble oder Insertion Sort klappt es zwar, aber da mein Array bis zu 500000 Datensätze hat, dauert es vieeeel zu lange.
Ich möchte es mit qsort versuchen, komme aber mit den code nicht klar. Das habe ich bis jetzt:
C++: |
int compare(const void *p1, const void *p2) { int i = *((float *)p1); int j = *((float *)p2);
if (m_arArray.ElementAt(i).f > m_arArray.ElementAt(j).f) return (1); if (m_arArray.ElementAt(j).f < m_arArray.ElementAt(j).f) return (-1); return (0); }
|
und:
C++: |
size_t nelems = m_arSimArray.GetSize() / sizeof (float);
qsort((void *)m_arSimArray, nelems, sizeof (float), compare);
|
mit folgender Fehlermeldung: error C2440: 'type cast' : cannot convert from 'class CArray<struct Array,struct Array>' to 'void *' No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Hilfe!!
Viele Grüße, cuara. |