Eigene stl list programmieren



  • Hi!

    Ich hoffe während ich die Frage formuliere komme ich selber auf die Lösung ;), also:

    Doppelte verkette Listen stellen für mich absolut kein Problem dar, jetzt will ich aber meine Klassen von einer eigenen Liste verwalten lassen.
    Die Klassen sollen also nicht mehr dinge wie Klasse *prev usw. enthalten, eine list soll diese Aufgaben übernehmen.

    Wie geh ich das am besten an?
    So würde ich mir ja die Liste erstellen

    List<Klasse> temp;

    Jetzt hab ich temp, eine Liste vom typ Klasse die gar nichts enthält.
    Nun könnte man sagen temp.Add(Klasse);, ab da weiß ich nicht wie man das intern machen soll.

    Ich komm da gerade absolut nicht weiter, kann mich jemand in die richtige Richtung schubsen?

    Normalerweise kenn ich das so:

    Person *ptrPerson = new Person("xyc", 20, "dsfsdf", "345/324532");
    
    	ptrPerson = new Person("vyxv", 30, "sgfg", "023/8234", ptrPerson);
    	ptrPerson = new Person("yxcvxy", 30, "dfgsd", "0446/6344", ptrPerson);
    

    Man übergibt Informationen und den vorherigen Listeneintrag und der aktuelle wird wieder in ptrPerson gespeichert.

    Wie übertrage ich das? 😕 😕 😕



  • Eine Liste hat lediglich zwei Zeiger:
    first und last

    Diese sind vom Typ Node*

    Ein Node* hat 3 Elemente.
    Node* prev;
    Node* next;
    T element;

    Wobei T der Template Parameter ist, den die Liste nimmt.
    Intern arbeitet die Liste immer nur mit Nodes.
    new Node(prev, pred, element);

    Damit ist hoffentlich alles klar, oder?



  • Fast 😉

    Die Klasse Node ist ja scheinbar nicht wahnsinnig groß, deklariert man sie trotzdem in einer eigenen header oder fügt man sie gleich in der list.h ein?

    Ansonsten ist mir denke ich alles klar



  • listener schrieb:

    Die Klasse Node ist ja scheinbar nicht wahnsinnig groß, deklariert man sie trotzdem in einer eigenen header oder fügt man sie gleich in der list.h ein?

    Kann man machen wie man will. Oft ist Node eine innere Klasse von List - oft ist sie aber auch in der selben .h Datei definiert.

    In einer eigenen habe ich es noch nicht gesehen.



  • Yo habs auch so gemacht das sie eine klasse in der list klasse ist.
    besten dank!



  • man kann aber auch ne generische version von node benutzen, die kann man dann für jegliche einsatzmöglichkeiten benutzen, und in eine node.h stecken 🙂


Anmelden zum Antworten