CArray sortieren



  • Hallo @all, ich habe das folgende Problem:

    Ich möchte gerne den größten Integer-Wert in einem CArray ermitteln.

    CArray<int,int>TestArray;
    
    TestArray.Add(...)
    ...
    
    qsort(TestArray.GetData(), TestArray.GetSize(), sizeof(int), Vergleiche);
    
    int Vergleiche(const void* a, const void* b) 
    { 
      int a1 = *((int*)a); 
      int b1 = *((int*)b); 
      return a1-b1; 
    }
    

    Warum sortiert er mir mein Array nicht nach diesem Prinzip?
    Es handelt sich bei den Werten im Array um Ganzzahlen.

    Gibt es eine andere Möglichkeit die größte Zahl aus dem Array herauszufinden bzw. wie muss ich meine Funktion anpassen um das Array ordnungsgemäß zu sortieren (am liebsten den größten Wert am Anfang)? 😕



  • äh, ja.

    int a1 = *((int*)a);
    

    So wie in der Funktion solltest du es nicht machen,
    da das etwas unschön ist. Zu dem du auch garnicht
    weisst, was denn bei void *a steht...

    Ich verwende i.d.R. std::vector oder std::list aus der stl,
    und finde das es da recht angenehm geregelt ist mit std::sort.
    Eigentlich müsste es für CArray etwas ähnliches geben.

    Devil



  • Hallo devil81,

    ich hab es jetzt mit std::sort gelöst, so wie du beschrieben hast!
    Danke für den Tipp!



  • Dressman1981 schrieb:

    Hallo devil81,

    ich hab es jetzt mit std::sort gelöst, so wie du beschrieben hast!
    Danke für den Tipp!

    CArray kann man mit std::sort sortieren ?

    Devil



  • Ja, ein CArray kann man mit std::sort gut sortieren!

    Mittlerweile sortiere ich das Array aber nicht mehr, sondern arbeite mit einem vector-Array und suche mir den größten Wert mit std::max_element raus, falls jemand mal dasselbe Problem haben sollte.


Anmelden zum Antworten