Saya telah menjalankan 3 percobaan berbeda yang melibatkan daftar dan vektor C ++.
Mereka dengan vektor terbukti lebih efisien, bahkan ketika banyak penyisipan di tengah terlibat.
Karenanya pertanyaan: dalam hal apa daftar lebih masuk akal daripada vektor?
Jika vektor tampak lebih efisien dalam banyak kasus, dan mempertimbangkan seberapa mirip anggota mereka, maka keuntungan apa yang tersisa untuk daftar?
Hasilkan bilangan bulat N dan masukkan ke dalam wadah agar wadah tetap terurut. Penyisipan telah dilakukan secara naif, dengan membaca elemen satu per satu dan memasukkan yang baru sebelum yang lebih besar pertama.
Dengan daftar, waktu melewati atap ketika dimensi meningkat, dibandingkan dengan vektor.Masukkan N bilangan bulat di ujung wadah.
Untuk daftar dan vektor, waktu meningkat dengan urutan besarnya yang sama, meskipun 3 kali lebih cepat dengan vektor.Masukkan bilangan bulat N dalam sebuah wadah.
Mulai timer.
Sortir wadah menggunakan list.sort untuk daftar, dan std :: sort untuk vektor. Hentikan timer.
Sekali lagi, waktu meningkat dengan urutan besarnya yang sama, tetapi rata-rata 5 kali lebih cepat dengan vektor.
Saya mungkin terus melakukan tes dan mencari tahu beberapa contoh di mana daftar akan terbukti lebih baik.
Tapi pengalaman bersama kalian membaca pesan ini mungkin memberikan jawaban yang lebih produktif.
Anda mungkin pernah menemukan situasi di mana daftar lebih nyaman digunakan, atau berkinerja lebih baik?
list
mungkin lebih baik jika Anda menghapus banyak elemen. Saya tidak percaya vector
akan pernah mengembalikan memori ke sistem sampai seluruh vektor dihapus. Ingat juga bahwa pengujian Anda # 1 tidak menguji waktu penyisipan saja. Ini adalah tes yang menggabungkan pencarian dan penyisipan. Itu adalah menemukan tempat untuk memasukkan di mana list
lambat. Sisipan yang sebenarnya akan lebih cepat daripada vektor.