Anfängerfrage - mehrdimensionales Array sortieren



  • Hallo,

    ich erstelle mit
    array<String^,2> ^arr = gcnew array<String^,2>(5,3);
    ein Array.

    1 | Name | Vorname
    4 | Name | Vorname
    5 | Name | Vorname
    3 | Name | Vorname
    2 | Name | Vorname

    Nach dem Befüllen möchte ich dieses nach Spalte 1
    sortieren.
    Wie kann ich das bewerkstelligen?
    ->Sort() klappt ja nur bei eindimensionalen Arrays...

    Für Eure Tipps dankend

    Klaus



  • 1. Mache eine Klasse Person mit Vorname und Nachname als Attribut
    2. Mache ein Array (oder besser eine List<Person^>) und sortiere dann.
    Dazu kannst Du dann der Klasse Person das IComparable<..> Interface impl.
    Oder dem Sort(..) Aufruf ein Delegaten zum Vergleichen übergeben (Comparison<Person^>).

    Simon



  • Nach ewiger googelei, nem Liter Kaffee und ner Schachtel Zigaretten 😉
    hab ich mich auch dazu durchgerungen. Muss zwar deswegen einen recht komplexen Teil Code austauschen, nützt aber wohl nix. Geht schlussendlich so auch komfortabler.

    ref class users:IComparable
    {
    public:
    	property Int32 Rank;
    	property String ^Name;
    	property String ^Vorname;
    
    	virtual Int32 CompareTo(Object ^objekt){
    		users^ item = safe_cast<users^> (objekt);
    		if (this->rank < item->rank)
    			return -1;
    		else
    			return  1;
    	}
    	System::Void AddEntry(Int32 ^_Rank, String ^_Name, String ^_Vorname){
                     this->Rank = _Rank;
                     this->Name = _Name;
                     this->Vorname = _Vorname;
    	}
             //usw.....
    };
    

    Thx 4 Help! und schöne Grüße

    Klaus



  • Moin,

    (im Klugscheißmodus)

    return item->rank - this->rank;
    
    // oder
    
    return (this->rank < item->rank ? -1 : 1);
    

    hand, mogel



  • Feiner Klugscheißmodus !!!

    Thx a lot! 😃

    Klaus


Anmelden zum Antworten