Ich bin ein wenig verwirrt über Speicher Neuzuordnung in STL C++. Zum Beispiel weiß ich, wenn ich eine vector
deklariere und Elemente in sie zurückschiebe, wird der Vektor irgendwann eine Neuzuweisung von Speicherplatz benötigen und alle vorhandenen Elemente in diese kopieren. Für verknüpfte Listen ist keine Neuzuweisung erforderlich, da die Elemente nicht nacheinander im Stapel gespeichert werden und jedes Element einen Zeiger verwendet, um auf das nächste Element zu zeigen.Speicherzuweisung in STL C++
Meine Frage ist, wie ist die Situation für andere STL in C++? zum Beispiel string
, map
, unordered_map
? Müssen sie neu zugeordnet werden?
Natürlich variiert es für jeden Container, aber sie alle aufzulisten ist wahrscheinlich nicht gut für diese Seite geeignet. – BoBTFish
'string' ist meistens dasselbe wie' vector'. – phantom
Reallokation führt zu ungültigen Iteratoren, also ist dies * fast * ein Duplikat von http://stackoverflow.com/q/3329956/179910. –