Annahme der zusammenhängenden Speicherung von STL-Vektoren
Können wir davon ausgehen, dass die Elemente eines modifizierten STL-Vektors zusammenhängend im Speicher gespeichert sind?
Frage:
Kann man bei einem STL-Vektor mit geänderter Größe vc
Antwort:
Ja, aber mit einer Einschränkung.
Gemäß Gemäß dem C 03-Standard (23.2.4.1) werden Elemente innerhalb eines STL-Vektors zusammenhängend gespeichert. Das bedeutet, dass für jeden Vektor v mit Elementtyp T (außer bool) &vc[0] n gleich &vc[n] für alle Werte von n zwischen 0 und v.size() - 1 ist.
Achtung:
Obwohl diese Annahme im Allgemeinen zutrifft, ist es wichtig, sich der möglichen Speicherneuzuweisung bewusst zu sein, die beim Hinzufügen von Elementen zum Vektor auftreten kann. Wenn die Kapazität des Vektors überschritten wird, werden die Daten des Vektors möglicherweise in einen neuen Speicherblock verschoben, wodurch alle vorhandenen Zeiger oder Iteratoren ungültig werden. Daher ist es wichtig, die Möglichkeit einer Neuzuweisung zu berücksichtigen, wenn man sich auf die Annahme eines zusammenhängenden Speichers verlässt.
Das obige ist der detaillierte Inhalt vonIst der STL-Vektorspeicher nach der Größenänderung zusammenhängend?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!