Heim >Backend-Entwicklung >C++ >Wie kann man die Kapazität eines „std::vector' reduzieren?
Größe von std::vector ändern: Überschüssige Kapazität abschneiden
Frage: Wie kann ich einen std::vector verkleinern? ungenutzten Speicherplatz zurückgewinnen und Kapazität reduzieren?
Antwort: Um einen std::vector auf seine aktuelle Größe zu verkleinern, können Sie den in Effective STL von Scott Meyers empfohlenen „Swap-Trick“ verwenden ( Punkt 17). So funktioniert es:
1. Erstellen Sie einen temporären Vektor:
Erstellen Sie einen temporären std::vector mit demselben Datentyp wie der ursprüngliche Vektor.
<code class="cpp">vector<Person> temp(persons); // Assuming 'persons' is the original vector</code>
2. Tauschen Sie die Vektoren aus:
Tauschen Sie den ursprünglichen Vektor mit dem temporären Vektor mithilfe der swap()-Funktion.
<code class="cpp">persons.swap(temp);</code>
Erklärung:
Der std::vector-Kopierkonstruktor reserviert Speicher nur für die erforderliche Anzahl der zu kopierenden Elemente. Durch das Vertauschen der Vektoren erstellen Sie im Wesentlichen einen neuen Vektor, der der aktuellen Größe des ursprünglichen Vektors entspricht. Der ursprüngliche Vektor erhält dann die neu zugewiesene Größe vom temporären Vektor, wodurch die überschüssige Kapazität effektiv reduziert wird.
Dieser Ansatz ist effizient und erfordert kein Kopieren einzelner Elemente. Es basiert auf der Swap-Operation, bei der es sich um eine Operation mit konstanter Zeit handelt.
Das obige ist der detaillierte Inhalt vonWie kann man die Kapazität eines „std::vector' reduzieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!