So reduzieren Sie effektiv die Kapazität in einem std::vector
Wenn Sie sich mit einem std::vector konfrontiert sehen, der über überschüssige Kapazität verfügt, Sie fragen sich vielleicht, ob es eine Möglichkeit gibt, die Größe zu verkleinern, um Speicher freizugeben. Obwohl es dafür keine direkte Methode gibt, gibt es eine clevere Technik, die als „Swap-Trick“ bekannt ist.
Der Swap-Trick
Gemäß Punkt 17 von Scott Meyers‘ Effective STL können Sie den Swap-Trick verwenden, um überschüssige Kapazität von einem Vektor zu entfernen. So funktioniert es:
<code class="cpp">vector<Person>(persons).swap(persons);</code>
Nachdem dieser Austausch durchgeführt wurde, wird der Vektor mit dem Namen „Personen“ „passend verkleinert“, was bedeutet, dass seine Kapazität reduziert wird, um der Anzahl der darin enthaltenen Elemente zu entsprechen.
So funktioniert der Trick
Dieser Trick macht sich die Tatsache zunutze, dass der Kopierkonstruktor des Vektors nur die erforderliche Menge an Speicher für die zu kopierenden Elemente zuweist. Durch die Erstellung eines neuen Vektors mit der gleichen Anzahl von Elementen wie der ursprüngliche Vektor erstellt der Kopierkonstruktor einen neuen Vektor mit einer kleineren Kapazität.
Die Swap-Methode tauscht dann die Inhalte und Kapazitäten des ursprünglichen und des neuen Vektors aus. Infolgedessen bleibt die Kapazität des ursprünglichen Vektors verringert.
Das obige ist der detaillierte Inhalt vonSo reduzieren Sie überschüssige Kapazität in einem std::vector: Der Swap-Trick erklärt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!