2016-11-28 22 views

cevap

9

İlk olarak, Rust elemanları eklemek için (Standart kütüphanede) garantili gecikme ile herhangi bir kütüphane sunmaz: bir zaman sınırsız süre alabilir bellek tahsis yeni elemanlar eklenmesi ve zaman Pas koleksiyonları genellikle bellek tahsis edebilir en kötü durumda.

  • yığın uygulanabilir ya Vec veya LinkedList (her ikisi de pop_back ve push_back özellikler) üzerine
  • bir sıra ya da uygulanabilir:

    bahsedilen varlık, her durum için iki yarışmacının vardır VecDeque veya LinkedList üstünde

fark (her ikisi de pop_front ve push_back özellikler) Vec* ve LinkedList arasındaki erence, ikincisinin basit olması: her bir çağrı için push_back'a bir bellek tahsisi yapılmıştır. Bir yandan, bu harika bir şey çünkü push_back maliyetinin, koleksiyonda bulunan eleman sayısından bağımsız olduğu anlamına geliyor, öte yandan ... hafıza tahsisi çok uzun zaman alabilir.

eski

biraz daha karmaşıktır:

  • sahip olduğu daha iyi verim, varlık sayesinde daha önbellek dostu
  • ek kapasite, garanti sahiptir olmayan tahsis sürece aşırı kapasite olmadığı için push_back
  • hala vaktinden
fazla kapasite ayırma olmadığında da o (1) push_back itfa tutar

Genel olarak, bir yığın için Vec ve bir sıra için VecDeque kullanmanız önerilir.

7

Hem VecDeque ve LinkedList _ front/backpush/pop var. Her

+1

Hmm teşekkürler, 'FIFO' ve 'LIFO 'sihirli anahtar kelimelerini aradım ve önemli bir şeyleri yoktu. Belki bir dokümantasyon problemidir. – Boiethios

+0

std :: gördüm Vec bir yığın için iyi bir seçimdir, ancak bir kuyruk için daha verimli nedir? – Boiethios

+0

Kullanım durumunuza bağlıdır. "LinkedList" in daha öngörülebilir olacağını tahmin ediyorum, ama VecDeque 'bazı yollarla ortalamada daha verimli, ama gerçekten bunu kendiniz ölçmek zorunda kalacaksınız. –

İlgili konular