FIFO veya LIFO koleksiyonlarına (temelde push
, pop
ve front
/) ihtiyaç duyarsak, Rust'ta ne kullanmalıyız? C++ 'dan std::queue
veya std::stack
gibi bir şey.Sıra ve yığın koleksiyonları var mı?
cevap
İ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
veyaLinkedList
(her ikisi depop_back
vepush_back
özellikler) üzerine - bir sıra ya da uygulanabilir:
bahsedilen varlık, her durum için iki yarışmacının vardır
VecDeque
veyaLinkedList
ü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
push_back
itfa tutar
Genel olarak, bir yığın için Vec
ve bir sıra için VecDeque
kullanmanız önerilir.
Hem VecDeque
ve LinkedList
_ front
/back
push
/pop
var. Her
- 1. CPU veya RAM'de yığın var mı?
- 2. C# kümesinde yığın tabanlı diziler var mı?
- 3. Eclipse ayıklayıcı ve koleksiyonları
- 4. Rust'taki yığındaki koleksiyonları kullanmanın bir yolu var mı?
- 5. Java Koleksiyonları (LIFO Yapısı)
- 6. Neden Dictionary.TrimExcess() var mı?
- 7. Scala koleksiyonları
- 8. C# koleksiyonları her zaman siparişi zorlar mı?
- 9. İstif üzerine yığın izi yazdırmanın bir yolu var mı?
- 10. Android'den eksiksiz bir yığın izi görmenin bir yolu var mı?
- 11. VHDL'de yığın/sıra gibi veri yapıları nasıl uygulanır?
- 12. Yığın package.yaml dosyasında ne var?
- 13. Raylar/Yakut: Yığın izlerini kısaltmanın herhangi bir yolu var mı?
- 14. Yığın görünümündeki fotoğrafların sırasını değiştirmenin herhangi bir yolu var mı?
- 15. .net'de çift taraflı bir yığın sınıfı var mı?
- 16. İki Koleksiyonları
- 17. Blackberry'de bir Dize biçiminde yığın özelliğinin yığın izini almanın bir yolu var mı?
- 18. Sıra &
- 19. İş kuyruğu ve hazır sıra
- 20. console.memory eşdeğeri var mı?
- 21. Ana makine için yığın çerçevesinin kayıtlı bir çerçeve işaretçisi ve kaydedilmiş bir dönüş adresi var mı?
- 22. C++ STL koleksiyonları ve C# koleksiyonlarının karşılaştırması?
- 23. Drools, yinelenen koleksiyonları yönetir ve özelliği doğrular
- 24. Bellek bölgesini yığın alanı olarak mı kullanıyorsunuz?
- 25. Koleksiyonları Guava'yı kullanarak dönüştürürken sıfırları kaldırmanın zarif bir yolu var mı?
- 26. Yalnızca yazma koleksiyonları MongoDB
- 27. Scala'da koleksiyonları sıralama
- 28. Animasyon parçaları ve arka yığın
- 29. Oracle'da koleksiyonları birleştirme?
- 30. Öbek oluştururken benzersiz bir yığın mı?
Hmm teşekkürler, 'FIFO' ve 'LIFO 'sihirli anahtar kelimelerini aradım ve önemli bir şeyleri yoktu. Belki bir dokümantasyon problemidir. – Boiethios
std :: gördüm Vec bir yığın için iyi bir seçimdir, ancak bir kuyruk için daha verimli nedir? – Boiethios
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. –