Memahami vektor dan Ciri Uniknya
"STL Berkesan" Scott Meyers menyerlahkan pengelakan vektor disebabkan perbezaannya daripada bekas STL standard. Keanehan ini berpunca daripada pengoptimuman ruang vektor, menyimpan setiap bool sebagai sedikit daripada satu bait.
Memecahkan vektor
Vektor< Tingkah laku tidak konvensional bool> timbul daripada pelaksanaan asasnya. Tidak seperti bekas STL tradisional, vektor mengembalikan objek proksi, bukan bool&, apabila mengakses elemen menggunakan operator[]. Proksi ini membenarkan manipulasi tahap bit tetapi tidak mempunyai keupayaan untuk mengakses terus alamat memori.
deque sebagai Alternatif?
Sementara Meyers menyokong deque sebagai alternatif yang berdaya maju kepada vektor, adalah penting untuk mengambil perhatian potensi kelemahannya. Deque tidak mendapat manfaat daripada kecekapan memori vector, menyimpan setiap bool sebagai bait penuh. Selain itu, pelaksanaan perpustakaan standard Microsoft mungkin memperuntukkan bahagian deque dengan cara yang menjejaskan kecekapan.
Ringkasan
Sisihan Vector daripada bekas STL standard berpunca daripadanya penggunaan memori yang dioptimumkan. Walaupun ia menawarkan penjimatan ruang yang ketara, ia melakukannya dengan kos keupayaan bekas standard tertentu dan had dalam pengalamatan memori. Deque menyediakan pilihan yang lebih konvensional, tetapi kecekapannya mungkin berbeza-beza bergantung pada pelaksanaan.
Atas ialah kandungan terperinci Mengapa Saya Perlu Mengelak `std::vector` dan Bila Mungkin `std::deque` Menjadi Pilihan Yang Lebih Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!