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. ]


Anmelden zum Antworten