Heim >Backend-Entwicklung >C++ >So verkleinern Sie die Kapazität eines „std::vector': Der „Swap-Trick' erklärt
Diese Frage, die bereits gestellt wurde, befasst sich mit einem spezifischen Problem, mit dem viele Programmierer bei der Arbeit mit std konfrontiert sind ::Vektoren. Es wird nach einer Methode gesucht, um die Kapazität eines Vektors zu verkleinern und seine überschüssige Speicherzuweisung zu reduzieren, nachdem sein Inhalt reduziert wurde.
Antwort:
Die empfohlene Lösung, wie vorgeschlagen in Effective STL von Scott Meyers (Punkt 17) besteht darin, den „Swap-Trick“ anzuwenden, um die überschüssige Kapazität zu reduzieren. Bei dieser Methode wird ein neuer Vektor mit der gewünschten reduzierten Kapazität erstellt und sein Inhalt mit dem ursprünglichen Vektor ausgetauscht.
<code class="cpp">vector<Person>(persons).swap(persons);</code>
Nachdem dieser Austausch durchgeführt wurde, wird die Zuordnung des ursprünglichen Vektors, der jetzt leer ist, aufgehoben und die neue Kopie wird angezeigt wird seinen Platz mit seiner reduzierten Kapazität einnehmen, die perfekt zu seinen aktuellen Inhalten passt.
Grundprinzip:
Diese Technik nutzt einen Schlüsselaspekt des Kopierkonstruktors des Vektors Verhalten. Beim Kopieren von Elementen aus einem Vektor weist der neue Vektor unabhängig von der Kapazität des ursprünglichen Vektors nur so viel Speicher zu, dass die kopierten Elemente Platz finden. Durch den Austausch des neuen, verkleinerten Vektors mit dem Original wird die überschüssige Kapazität effektiv reduziert.
Das obige ist der detaillierte Inhalt vonSo verkleinern Sie die Kapazität eines „std::vector': Der „Swap-Trick' erklärt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!