Bir konteynerin yığın içinde kullanılması için gereken tek işlemler şunlardır:
- geri()
- Geri itmek()
- pop_back ()
Neden bunun için varsayılan konteyner bir vektör yerine bir deque?
Yeniden tahsisleri geri ayırma, push_front () işlevinin verimli bir işlem olması için front () öğesinden önce bir öğe tamponu vermez mi? Asla bir yığın bağlamında kullanılmayacakları için bu öğeler boşa gitmiyor mu?
Bir vektör yerine bu şekilde bir süslemenin kullanılması için bir ek yük yoksa, neden öncelikli kuyruk için varsayılan bir vektör de bir deque değil? (öncelikli sıra için front (), push_back () ve pop_back () gerekir - aslında yığınla aynıdır)
Aşağıdaki Cevaplara göre güncellendi:
Deque'in genellikle uygulanma şeklinin, sabit boyutlu dizilerin değişken boyutlu bir dizisi olduğu görülmektedir. Bu, büyümeyi bir vektörden daha hızlı hale getirir (yeniden tahsis etme ve kopyalama gerektirir), bu nedenle, tamamen öğe eklemek ve kaldırmakla ilgili olan bir yığın gibi bir şey için, deque muhtemelen daha iyi bir seçimdir.
Her kaldırma ve ekleme, pop_heap () veya push_heap () komutunu çalıştırmanızı gerektirdiğinden, öncelikli kuyruğa büyük ölçüde indeksleme gerekir. Bu muhtemelen vektörü orada daha iyi bir seçim yapar, çünkü bir eleman eklemek yine de sabit olarak amorti edilir.