Iterator vs. normale Schleifen



  • finix schrieb:

    Für vector schon, aber list.size() ist häufig O(n). Wie soll den auch die Größe einer Liste zur Compilezeit bekannt sein?

    Zur Compilzeit bekannt ist Quatsch, aber eine size() Laufzeit von O(n) ist auch nicht der Normalfall. Genauso kann man bei jedem Einfügen und Löschen die Grösse aktualisieren, dann ist size() auch nicht mehr als die simple Rückgabe eines Wertes.



  • groovemaster schrieb:

    Genauso kann man bei jedem Einfügen und Löschen die Grösse aktualisieren, dann ist size() auch nicht mehr als die simple Rückgabe eines Wertes.

    Die Frage ist nur, ob man das will 😉
    Manchmal kann es sinnvoll sein die Laenge nicht mitzuspeichern.

    @Phoemuex:
    ein op[] fuer list haette O(N), es sei denn man erzeugt mehr overhead in der list... was auch wieder bloed ist.



  • Phoemuex schrieb:

    Wieso hat list den keinen Index-Operator?

    Weil eine List eine unangemessene Datenstruktur ist, wenn man einen Indexzugriff haben will. Ein Zugriff per Indexoperator würde wie gesagt (von irgendwelchen Tricks mal abgesehen) O(n) kosten. Wenn du nun per Indexoperator auf das Element am Ende der Liste zugreifen willst muss die Liste einmal komplett durchlaufen werden.


Anmelden zum Antworten