Frage zu vector



  • Ich möchte eine Liste machen aus der ich verschiedene Objekte löschen kann. was eignet sich besser vector oder list?



  • Grundsätzlich gilt:
    Wenn du viel löschen und einfügen musst, dann ist eine verkettete Liste besser geeignet. (Am Ende einfügen ist auch für std::vector ok).

    Wenn du oft auf die Daten zugreifen möchtest ist ein std::vector performanter.

    *Edit
    Wie gross ist denn dein Datensatz? Und was für Operationen führst du darauf aus?



  • Ich würde dir einfach empfehlen es in deinem Programm zu testen. Mit gut gewähltem typedef kannst du dann mühelos den Container wechseln.



  • Wenn du schon Iteriert hast, dann std::list .
    Da eine verlinkte Liste eine Löschgeschwindigkeit von O(1 + Suche) hat, ist es nun mal davon abhängig, ob das Element schon gefunden wurde.
    Ein Vektor hat die Löschgeschwindigkeit O(n).

    MfG, EOutOfResources

    EDIT: Schau mal hier.



  • Wenn die Reihenfolge keine Rolle spielt, kannste im vector auch mit O(1) löschen. Bei vielen kleinen Objekten hat list störend viel Speicheroverhead, dann ist queue zu bedenken, wenn vector nicht geht.


Anmelden zum Antworten