Sortien von Feldern (zweidimensional)



  • Hallo

    In den FAQ steht zwar einiges zum sortieren, aber nicht direkt zu zweidimensionalen Feldern, oder ich habe es nicht gefunden. Wie kann ich bei zweidimensionalen Feldern so sortieren, daß die Zuordnung der Felder erhalten bleibt?



  • Kannst Du mal ein Beispiel geben?
    Mir ist überhaupt nicht klar, was Du tun willst.

    MfG Jester



  • du willst so sortieren das die zuordnung der felder gleich bleibt ?

    also quasi nicht sortieren O_o

    oder nur "eine dimension" sortieren ?



  • Hallo,

    Ich denke er meint nur eine Dimension.

    Also nach der ersten oder zweiten "Spalte". Jeweils mit dem zugehörigen Wert aus der anderen "Spalte".



  • Hallo

    Als Beispiel nehme ich mal eine Tabelle. in der ersten Spalte habe ich irgendwelche Zahlen (ID) und in der zweiten Spalte den dazugehörigen Text. Wenn ich nur die erste Spalte sortiere stimmt die ID mit dem Text ja nicht mehr überein. Ich möchte nach der ID sortieren und die Texte sollen immer noch zur ID passen.



  • dann musst du beim vertauschen der elemente eben nicht nur die ids vertauschen sondern den ganzen datensatz.



  • Das ist schon klar. Aber wie mache ich das?



  • Vielleicht hilft das:

    #include <algorithm>
    #include <string>
    #include <iostream>
    
    using namespace std;
    
    struct Datensatz
    {
    	int ID;
    	string Text;
    };
    
    bool Comparision(const Datensatz &lhv, const Datensatz &rhv)
    {
    	return lhv.ID < rhv.ID;
    }
    
    void Ausgabe(Datensatz Daten[], int n)
    {
    	for (int i = 0; i < n; ++i)
    		cout << "Datensatz[" << i << "] mit ID: " << Daten[i].ID << " = " << Daten[i].Text << endl;
    }
    
    int main()
    {
    	string Texte[] = {"Ich", "hoffe", "gleich", "sind", "sie", "in", "der", "richtigen", "Reihenfolge", "!"};
    	Datensatz Daten[10];
    	for(int i = 0; i < 10; ++i)
    	{
    		Daten[i].ID = i;
    		Daten[i].Text = Texte[i];
    	}
    
    	random_shuffle(&Daten[0], &Daten[10]);
    	Ausgabe(Daten, 10);
    	cout << "-----------------------------------------" << endl;
    	sort(Daten, Daten+10, Comparision);
    	Ausgabe(Daten, 10);
    
    }
    


  • perfekt, vielen Dank.

    SArkin


Anmelden zum Antworten