CodeBlanks Logo Icon CodeBlanks

BTreeMap

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

main.rs
use std::collections::BTreeMap;

fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
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

Soru
let secim: Vec<_> = sicaklik.____(12..=18).collect();
Cevap
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

Orta seviye bölümündeki tüm dersler