Heim > Backend-Entwicklung > C++ > Hauptteil

So reduzieren Sie überschüssige Kapazität in einem std::vector: Der Swap-Trick erklärt

Patricia Arquette
Freigeben: 2024-10-26 22:57:03
Original
153 Leute haben es durchsucht

How to Reduce Excess Capacity in a std::vector: The Swap Trick Explained

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!