LinkedList vs. STL



  • Hi,

    also ich code schon ne lange Zeit, aber ich versteh einfach nicht, wieso sowas wie LinkedList noch immer praktiziert wird. Ich mein die std::list und der std::vector sind doch nun echt viel besser! ( ➡ meiner Meinung nach 🙂 )

    Kann mir einer sagen wieso die Leute noch immer auf die STL verzichten und lieber die LinkedList benutzen??? 😕 😕

    Ciao,
    Patrick 🙂



  • Hi,

    vielleicht wissen viele auch gar nicht, dass es bereits fertige Implementierungen
    gibt. Ich habe bis vor nem Jahr auch noch sowas selbst programmiert, einfach
    weil ich der STL noch ueberhaupt nicht vertraut war.

    Wie gesagt, ich denke, dass viele einfach nicht wissen, dass es sowas
    bereits gibt.

    mfg
    v R



  • std::vector hat mit verketteten listen aber auch rein garnix zu tun.

    std::list IST eine verkettete liste und zwar doppelt.
    natuerlich ist es sinnlos eine doppelt verkettete liste neu zu schreiben, aber was wenn man ne einfach verkettete brauch, oder eine move-to-front list, oder sonstige caching verfahren darauf anwenden will?

    std::list und std::vector sind bei weitem nicht welt.



  • Ich denke das man eine doppelt Verkettete Liste da einsetzen kann wo es eine einfache auch tun würde.

    Was muß ich mir unter

    move-to-front list

    vorstellen ?

    thx



  • Bei move-to-front listen wird der gefundene Eintrag an den Beginn der Liste einsortiert, dies führt im laufe der Zeit dazu das sich die Elemente nach der Häufigkeit sortieren und sich somit der Zugriff im Mittel stark beschleunigt, denn das Element welches am häufigsten abgefragt wurde steht meistens an einer der ersten Plätze in der Liste.



  • Das programmiert man um das Prinzip zu verstehen was hinter diesen Datenstrukturen steckt!



  • Normal nutzt der User schon die STL oder altenativ die Listenklassen aus den speziellen Bibliotheken. Die STL kann man auch fast uberall einbinden.

    Aber weiss man bei diesen Templates immer genau wie es impelmentiert wird ? Die MS Impl hat probleme mit Multithreading, z.B.

    Wenn es in bestimmten codeabschnitten wirklich auf Geschwindigkeit ankommt, auf Sympthome die durch die STL ned abgedeckt werden, wird man wohl selbst implementieren muessen (hab ich aber noch nie gebraucht).

    Und ! Linked List ist immer nen sehr gutes Beispiel zum Üben fuer die Zeigerproblematik und wird in fast allen Lehrbuechern hergenommen. In wieviel Buechern wird denn zu Uebungszwecken ne eigene Stringklasse und ne Linked List selbst implementiert.

    Ich hoffe nur, das die, die hier auch selber implementieren wollen, das ned tun nur weil sie das Buch ned zu ende gelesen haben 😃 😃 😃

    Ciao ...



  • Patrick schrieb:

    Kann mir einer sagen wieso die Leute noch immer auf die STL verzichten und lieber die LinkedList benutzen??? 😕 😕

    hofentlich ist dir nicht entgangen, daß die stl nur container anbietet, die _im allgemeinen_ saugut sind, aber _in spezialfällen_ leicht geschlagen werden können. man hat ja so viel freiheiten, datenstrukturen zu erfinden und bereits erfundene zu kombinieren.
    leichtes beispiel zum kombinieren: hab ne map<int,string> m vor mir, die ist mir aber ein wenig zu lahm. dann ist es leicht, statt m[k]=v und cout<<m[k] jetzt m[k%2048]=v und cout<<m[k%2048] zu sagen. also zwei datenstrukturen kombinieren, das hier ist ne hashtable mit bäumen dahinter. macht den bäumen so um 11 entscheidungen weg, braucht dafür ein paar k speicher.
    das kann die stl nicht alles erfassen. sie kann wirklich nur ein paar ganz allgemeine datenstrukturen abieten, die an sich so ok sind.
    die listen benutzt man eh ungern. aber ne map zum beispiel, da nimmt man oft lieber ne hashtable. die ist halt in der stl gar nicht so drin. und wenns schon bäume sein müssen, warum ausgerechnen avl-bäume mit aufwärtszeiger? ok, avl ist zugegeben recht schnell. aber aufwärtszeiger waren nur, damit man durchiterieren kann ind die iteratoren flach bleiben. die aufwärtszeiger sind also mal gleich ein grund, zu wechseln. wann will ich schon durch bäume iterieren? und warum nicht b-bäume? oder spreizbäume? oder auch mal nen nicht ballancierten? alle haben vor- und nachteile und ihr spezielles anwendunghsgebiet, wo sie besser sind. mit noch 10 nicht gerade unüblichen baumarten wird dann klar, daß die stl gar nicht alle anbieten sollte.


Anmelden zum Antworten