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

Barbara Streisand
Lepaskan: 2024-10-26 15:58:30
asal
157 orang telah melayarinya

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

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!

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!