Bagaimana untuk Mengurangkan Kapasiti `std::vector`?

Patricia Arquette
Lepaskan: 2024-10-29 03:07:30
asal
627 orang telah melayarinya

 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>
Salin selepas log masuk

2. Tukar Vektor:

Tukar vektor asal dengan vektor sementara menggunakan fungsi swap().

<code class="cpp">persons.swap(temp);</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!