Baik siswa kelas saya tampaknya tidak dapat menjelaskan kepada saya kapan lebih efektif menggunakan vektor, tetapi mereka terlihat cukup senang ketika menasihati saya untuk menggunakan daftar.
Ini adalah bagaimana saya memahaminya
Daftar : Setiap item berisi alamat ke elemen berikutnya atau sebelumnya, jadi dengan fitur ini, Anda dapat mengacak item, meskipun item tersebut tidak diurutkan, urutannya tidak akan berubah: efisien jika memori Anda terpecah-pecah. Tetapi itu juga memiliki keuntungan lain yang sangat besar: Anda dapat dengan mudah memasukkan / menghapus item, karena satu-satunya hal yang perlu Anda lakukan adalah mengubah beberapa petunjuk. Kekurangan: Untuk membaca item tunggal acak, Anda harus melompat dari satu item ke item lain hingga Anda menemukan alamat yang benar.
Vektor : Saat menggunakan vektor, memori jauh lebih teratur seperti array reguler: setiap item ke-n disimpan tepat setelah (ke-1) item ke-1 dan sebelum (ke-1) ke-ke-ke-1. Mengapa lebih baik daripada daftar? Karena itu memungkinkan akses acak cepat. Begini caranya: jika Anda tahu ukuran item dalam vektor, dan jika mereka berdekatan dalam memori, Anda dapat dengan mudah memprediksi di mana item ke-n berada; Anda tidak perlu menelusuri semua item dalam daftar untuk membaca yang Anda inginkan, dengan vektor, Anda langsung membacanya, dengan daftar yang tidak dapat Anda baca. Di sisi lain, modifikasi array vektor atau ubah nilainya jauh lebih lambat.
Daftar lebih tepat untuk melacak objek yang dapat ditambahkan / dihapus dalam memori. Vektor lebih tepat ketika Anda ingin mengakses elemen dari sejumlah besar item tunggal.
Saya tidak tahu bagaimana daftar dioptimalkan, tetapi Anda harus tahu bahwa jika Anda ingin akses baca cepat, Anda harus menggunakan vektor, karena seberapa baik STL mempercepat daftar, itu tidak akan lebih cepat dalam akses baca daripada vektor.