Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengurangkan Kapasiti `std::vector`?

Bagaimana untuk Mengurangkan Kapasiti `std::vector`?

Patricia Arquette
Patricia Arquetteasal
2024-10-29 03:07:30727semak imbas

 How to Reduce the Capacity of a `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!

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