Rumah > pembangunan bahagian belakang > C++ > Sekiranya saya Menggunakan `reserve()` atau `resize()` untuk Praperuntukan Memori dalam C Vectors?

Sekiranya saya Menggunakan `reserve()` atau `resize()` untuk Praperuntukan Memori dalam C Vectors?

Linda Hamilton
Lepaskan: 2024-12-26 11:12:11
asal
417 orang telah melayarinya

Should I Use `reserve()` or `resize()` for Preallocating Memory in C   Vectors?

PraPeruntukan Memori dalam Vektor: rizab() vs. resize()

Dalam senario anda, anda berhasrat untuk pra-peruntukkan memori untuk ahli vektor bernama t_Names dengan saiz awal 1000. Selepas itu, anda merancang untuk meningkatkan kapasitinya dengan 100 apabila ia mencapai ambang tertentu.

Mengenai pilihan anda antara vector::resize() dan vector::reserve(), ia mempunyai tujuan yang berbeza.

resize() mengubah suai saiz vektor dengan meningkatkan atau mengurangkan kapasitinya dan menetapkan nilai mana-mana elemen baharu kepada hujah pembina yang disediakan (atau kepada nilai lalainya jika ditinggalkan). Ini bermakna anda boleh terus mengakses dan mengulangi elemen yang dimulakan ini.

Sebaliknya, reserve() hanya memperuntukkan memori untuk vektor tanpa memulakan sebarang elemen. Ia tidak menjejaskan saiz semasa tetapi meningkatkan kapasiti. Apabila anda memasukkan elemen kemudiannya, pengagihan semula tidak diperlukan, kerana memori telah dicagarkan lebih awal daripada masa.

Dalam kes anda, berdasarkan pengeditan yang disediakan, adalah disyorkan untuk mengelakkan praperuntukan manual. Sebaliknya, bergantung pada pengagihan semula automatik vektor. Ia mengoptimumkan proses ini dengan lebih cekap daripada praperuntukan manual.

Walau bagaimanapun, jika anda mempunyai anggaran tepat saiz yang diperlukan terlebih dahulu, pertimbangkan untuk menggunakan rizab() untuk praperuntukan awal. Jika perlu, vektor akan mengendalikan pengagihan semula tambahan semasa anda memasukkan lebih banyak elemen.

Atas ialah kandungan terperinci Sekiranya saya Menggunakan `reserve()` atau `resize()` untuk Praperuntukan Memori dalam C Vectors?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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