C ++ listelerini ve vektörlerini içeren 3 farklı deney yaptım.
Vektörleri olanlar, ortada çok fazla ekleme yapılsa bile daha etkili olduğunu ispatladılar.
Dolayısıyla soru: hangi durumda listeler vektörlerden daha anlamlı?
Vektörler çoğu durumda daha verimli görünüyorsa ve üyelerinin ne kadar benzer olduğunu düşünürsek, listeler için hangi avantajlar kalır?
N tamsayıları oluşturun ve bunları bir kap içine koyun, böylece kap sıralı kalır. Ekleme, elemanların birer birer okunması ve yenisinin ilk büyüğünden hemen önce yerleştirilmesiyle saf bir şekilde gerçekleştirilmiştir.
Bir liste ile, boyutlar arttıkça vektörlerle karşılaştırıldığında zaman çatıdan geçer.Kabın sonuna N tamsayıları yerleştirin.
Listeler ve vektörler için, zaman, vektörlerle 3 kat daha hızlı olmasına rağmen, aynı büyüklük sırasına göre artmıştır.N tamsayısını bir kaba yerleştirin.
Zamanlayıcıyı başlat.
Listeleri için list.sort kullanarak kabı sıralayın ve vektörler için std :: sort. Zamanlayıcıyı durdur.
Yine, zaman aynı büyüklük sırasına göre artar, ancak vektörlerde ortalama 5 kat daha hızlıdır.
Testler yapmaya devam edebilir ve listelerin daha iyi olacağı birkaç örnek bulabilirim.
Ancak bu mesajı okuduğunuzda ortak deneyimler daha verimli cevaplar verebilir.
Listelerin daha kolay kullanılabildiği veya daha iyi performans gösterdiği durumlar ile karşılaşmış olabilirsiniz?
list
sayıda öğeyi kaldırıyorsanız, muhtemelen daha iyi olur. Bir vector
vektörün tüm vektör silinene kadar sisteme bir bellek geri döneceğine inanmıyorum . Ayrıca, 1 numaralı testinizin yalnızca ekleme zamanını test etmediğini unutmayın. Arama ve ekleme birleştiren bir testtir. Yavaşça nereye yerleştirileceği yeri bulmak list
. Gerçek ek vektörden daha hızlı olacaktır.