Pointer - Array sortieren ?!
-
Stehe vor einem Problem:
Ich habe ein CObArray welches auf mehrere Objekte der folgenden Struktur zeigt:
long nID; CString szDatum; double dBetrag; int nTyp;
Es handelt sich dabei um Datensätze aus einer Datenbanktabelle die im Speicher gehalten werden.
Meine Aufgabe ist es jetzt, die Datensätze nach dem Datum zu sortieren.
Anm: Bubblesort ist für die Aufgabe zu langsam! Es handelt sich um ziemlich viele solcher Datensätze.
Ich könnte das Datum - momentan CString - in einen numerischen Wert ersetzen, dann ließe es sich leichter sortieren. Aber wie gehe ich nun da ran ? Kann ich das mit qsort machen ?
Ein 1D Array zu sortieren ist nicht das Problem, aber wie macht man das mit einem Struct-Array in Form von einem CObArray Objekt ?
-
Warum speicherst Du das Datum als String?
-
Ich sag ja, ich kann das Datum auch noch anders speichern - Als numerischen Wert oder mit irgendeiner MFC Datumsklasse zum Beispiel. Habs jetzt nur als String weils so aus der Datenbank kommt
-
// Wenn Deine Datumsspeicherklasse die Operatoren <, > und == unterstützt: int MyCompare(const void *pvParam1, const void *pvParam2) { const MyObject* pObj1=(MyObject*)pvParam1; const MyObject* pObj2=(MyObject*)pvParam2; return pObj1->date < pObj2->date ? -1 : pObj1->date > pObj2->date ? 1 : 0; } // Aufruf qsort( MyObArray.GetData(), MyObArray.GetCount(), sizeof(MyObject), MyCompare);
[ Dieser Beitrag wurde am 24.03.2003 um 10:02 Uhr von RenéG editiert. ]