Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengurangkan Kapasiti `std::vector`?
Mengubah saiz std::vector: Memangkas Kapasiti Berlebihan
Soalan: Bagaimana saya boleh mengecilkan saiz std::vector untuk menuntut semula ruang yang tidak digunakan dan mengurangkan kapasiti?
Jawapan: Untuk mengecilkan std::vektor kepada saiz semasa, anda boleh menggunakan "helah pertukaran" yang disyorkan dalam Effective STL oleh Scott Meyers ( Perkara 17). Begini caranya:
1. Cipta Vektor Sementara:
Buat std::vektor sementara dengan jenis data yang sama seperti vektor asal.
<code class="cpp">vector<Person> temp(persons); // Assuming 'persons' is the original vector</code>
2. Tukar Vektor:
Tukar vektor asal dengan vektor sementara menggunakan fungsi swap().
<code class="cpp">persons.swap(temp);</code>
Penjelasan:
Pembina salinan std::vector memperuntukkan memori hanya untuk bilangan elemen yang diperlukan yang disalin. Dengan menukar vektor, anda pada asasnya mencipta vektor baharu yang sesuai dengan saiz semasa vektor asal. Vektor asal kemudiannya menerima saiz yang baru diperuntukkan daripada vektor sementara, dengan berkesan memangkas kapasiti berlebihan.
Pendekatan ini cekap dan tidak melibatkan penyalinan elemen individu. Ia bergantung pada operasi swap, yang merupakan operasi masa tetap.
Atas ialah kandungan terperinci Bagaimana untuk Mengurangkan Kapasiti `std::vector`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!