Ich habe 3 verschiedene Experimente mit C ++ - Listen und Vektoren durchgeführt.
Diejenigen mit Vektoren erwiesen sich als effizienter, selbst wenn viele Insertionen in der Mitte beteiligt waren.
Daher die Frage: In welchem Fall sind Listen sinnvoller als Vektoren?
Wenn Vektoren in den meisten Fällen effizienter erscheinen und wenn man bedenkt, wie ähnlich ihre Mitglieder sind, welche Vorteile verbleiben dann für Listen?
Generieren Sie N Ganzzahlen und legen Sie sie in einen Container, damit der Container sortiert bleibt. Das Einfügen wurde naiv durchgeführt, indem die Elemente einzeln gelesen und die neue unmittelbar vor der ersten größeren eingefügt wurden.
Mit einer Liste geht die Zeit durch das Dach, wenn die Abmessung im Vergleich zu Vektoren zunimmt.Fügen Sie am Ende des Containers N ganze Zahlen ein.
Bei Listen und Vektoren erhöhte sich die Zeit um die gleiche Größenordnung, obwohl sie bei Vektoren dreimal schneller war.Fügen Sie N Ganzzahlen in einen Container ein.
Timer starten.
Sortieren Sie den Container mit list.sort für Listen und std :: sort für Vektoren. Timer anhalten.
Auch hier nimmt die Zeit um die gleiche Größenordnung zu, ist jedoch mit Vektoren im Durchschnitt fünfmal schneller.
Ich könnte weiterhin Tests durchführen und ein paar Beispiele herausfinden, bei denen sich Listen als besser erweisen würden.
Aber die gemeinsame Erfahrung von euch, die diese Nachricht liest, könnte produktivere Antworten liefern.
Sie sind möglicherweise auf Situationen gestoßen, in denen Listen bequemer zu verwenden waren oder eine bessere Leistung erbrachten?
list
wahrscheinlich besser macht , wenn Sie viele Elemente entfernt werden soll . Ich glaube nicht, dass ein vector
jemals Speicher an das System zurückgeben wird, bis der gesamte Vektor gelöscht ist. Denken Sie auch daran, dass bei Test 1 nicht nur die Einfügezeit getestet wird. Es ist ein Test, der Suche und Einfügung kombiniert. Es ist das Finden des Platzes zum Einfügen, wo list
es langsam ist. Die tatsächliche Einfügung ist schneller als der Vektor.