Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Mengecilkan Kapasiti `std::vector`: \"Tipu Pertukaran\" Diterangkan

Cara Mengecilkan Kapasiti `std::vector`: \"Tipu Pertukaran\" Diterangkan

Barbara Streisand
Barbara Streisandasal
2024-10-26 15:58:30158semak imbas

How to Shrink a `std::vector`'s Capacity: The

Cara Mengurangkan Kapasiti std::Vector

Soalan ini, yang telah ditanya sebelum ini, menangani isu khusus yang dihadapi oleh ramai pengaturcara semasa bekerja dengan std ::vektor. Ia mencari kaedah untuk mengecilkan kapasiti vektor, mengurangkan lebihan peruntukan memori selepas kandungannya dikurangkan.

Jawapan:

Penyelesaian yang disyorkan, seperti yang dicadangkan dalam STL Berkesan oleh Scott Meyers (Item 17), adalah menggunakan "helah pertukaran" untuk mengurangkan kapasiti berlebihan. Kaedah ini melibatkan penciptaan vektor baharu dengan kapasiti berkurangan yang diingini dan menukar kandungannya dengan vektor asal.

<code class="cpp">vector<Person>(persons).swap(persons);</code>

Selepas melakukan pertukaran ini, vektor asal, kini kosong, akan diagihkan dan salinan baharu akan mengambil tempatnya dengan kapasiti berkurangan yang sangat sesuai untuk kandungan semasanya.

Prinsip Dasar:

Teknik ini memanfaatkan aspek utama pembina salinan vektor tingkah laku. Apabila menyalin elemen daripada vektor, vektor baharu hanya memperuntukkan memori yang mencukupi untuk menampung elemen yang disalin, tanpa mengira kapasiti vektor asal. Dengan menukar vektor baharu yang dikecilkan dengan yang asal, kapasiti berlebihan dipangkas dengan berkesan.

Atas ialah kandungan terperinci Cara Mengecilkan Kapasiti `std::vector`: \"Tipu Pertukaran\" Diterangkan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn