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!