BTreeMap
- Rust kursu
- Orta seviye
- Ders 55/115
- 4 dk
BTreeMap ile sıralı anahtarlı harita kullanırsın.
BTreeMap
BTreeMap<K, V> de anahtar-değer tablosudur, ama anahtarları sıralı tutar. Arama O(log n)'dir; dolaşma her zaman anahtar sırasıyla yapılır. Anahtar türü Ord olmalıdır:
use std::collections::BTreeMap;
let mut m = BTreeMap::new();
m.insert("zeytin", 3);
m.insert("armut", 5);
m.insert("muz", 2);
for (k, v) in &m {
println!("{k}={v}"); // armut, muz, zeytin sırasıyla
}Aralık sorguları
Sıralı yapı, aralık sorgularına ve uç değerlere ucuzca erişim sağlar:
let mut sicaklik = BTreeMap::new();
for (saat, d) in [(8, 12), (12, 21), (15, 24), (20, 16)] {
sicaklik.insert(saat, d);
}
let ogleden_sonra: Vec<_> = sicaklik.range(12..=18).collect();
println!("{:?}", ogleden_sonra); // [(12, 21), (15, 24)]
println!("{:?}", sicaklik.first_key_value()); // Some((8, 12))Uygulama Sıralı liste
BTreeMap'e ("zeytin", 3), ("armut", 5) ve ("muz", 2) ekle; çiftleri anahtar=değer biçiminde her satıra bir tane yazdır.
Başlangıç kodu
use std::collections::BTreeMap;
fn main() {
// buraya yaz
}Örnek çözüm
use std::collections::BTreeMap;
fn main() {
let mut m = BTreeMap::new();
m.insert("zeytin", 3);
m.insert("armut", 5);
m.insert("muz", 2);
for (k, v) in &m {
println!("{}={}", k, v);
}
}Beklenen çıktı
armut=5 muz=2 zeytin=3
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hangisinde BTreeMap HashMap'ten daha uygundur?
- Sonuçların anahtar sırasıyla raporlanması gerektiğinde Doğru cevap
- En hızlı tekil arama gerektiğinde
- Anahtarlar Hash uyguluyor ama Ord uygulamıyorsa
- Hiçbir zaman
Açıklama: Sıralı çıktı, aralık sorguları ve en küçük/en büyük anahtar için BTreeMap; saf hız için HashMap.
2 Aralıkla sorgula
let secim: Vec<_> = sicaklik.____(12..=18).collect();
let secim: Vec<_> = sicaklik.range(12..=18).collect();
Açıklama: BTreeMap::range verilen anahtar aralığındaki çiftleri sırayla verir.
3 Özellik ve yapı
| Kavram | Anlamı |
|---|---|
Sıralı dolaşma |
BTreeMap |
Ortalama O(1) arama |
HashMap |
range(a..b) |
Yalnızca BTreeMap |
Anahtar Hash + Eq |
HashMap gereksinimi |