Heim > Backend-Entwicklung > C++ > Hauptteil

Wie kann man die Kapazität eines „std::vector' reduzieren?

Patricia Arquette
Freigeben: 2024-10-29 03:07:30
Original
627 Leute haben es durchsucht

 How to Reduce the Capacity of a `std::vector`?

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

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

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!

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!