standardmäßig die Algorithmen in <algorithm>
, sind generische Algorithmen, die auf Iteratoren arbeitet. Zusammenfassend können diese Algorithmen keinen Vorteil aus dem Aufbau des Containers ziehen.
Die STL fügt ihren Containern jedoch auch Memberfunktionen hinzu, die zwar weniger allgemein sind, aber von der Containerstruktur profitieren können. Ein Beispiel: std::find(map.cbegin(), map.cend(), element)
wird über alle Elemente gehen, um das gegebene Element zu finden, während map.find(element)
die Baumstruktur verwenden kann. Dies reduziert einen linear
Algorithmus auf einen log(n)
.
Die gleiche Strategie wird std::list
hinzugefügt, wie 'Verschieben' ein Element ist eine Std :: Liste ist nicht mehr als das Ändern der Links in der Liste, dies kann viel mehr performant als Verschieben/Kopieren des Inhalts der Elemente.
Also, für std::list<int>
, erwarte ich nicht viel anders, obwohl wenn Sie teure Klassen in der Liste speichern, werden Sie den Unterschied bemerken.
PS: std :: einzigartig keine Elemente entfernen, bewegt er sich nach hinten und gibt ein neues 'Ende', std :: entfernen (oder std :: list :: remove), um die Elemente zu entfernen
[Sie sind nicht das gleiche] (http://rextester.com/DPDX45285) – GingerPlusPlus