CodeBlanks Logo Icon CodeBlanks

std::unordered_map

std::unordered_map ile hash tabanlı map'i öğrenirsin.

std::unordered_map

std::unordered_map, karma tablo (hash table) tabanlı bir anahtar-değer kapsayıcısıdır. Ortalama ekleme ve erişim O(1)'dir. Öğeler sıralanmaz; sıralama gerekmiyorsa map'ten daha hızlıdır.

Örnek: std::unordered_map<std::string, int> m; m["apple"] = 3;. m["apple"] ortalama O(1)'de 3 döndürür. map'te aynı işlem O(log n)'dir. Sıralı gezmek gerekmiyorsa unordered_map tercih edilir. Anahtar türünün std::hash uzmanlığı olmalıdır; std::string ve temel türler için hazırdır.

hash function

unordered_map, anahtarları karma işlevi (hash function) ile kovalara (bucket) dağıtır. İyi dağılım O(1) sağlar; kötü dağılım O(n)'e düşer. Çakışmalar (collision) ayrı zincirle çözülür.

Özel türler için karma uzmanlığı yazmanız gerekir. std::string, int, double için hazır std::hash vardır. Örnek: std::hash<std::string> bir dizeyi tamsayıya dönüştürür. Bu tamsayı, kova indeksi verir. m["apple"] = 3; çağrısında önce karma hesaplanır, sonra kova bulunur.

Uygulama unordered_map ile çalış

std::unordered_map<std::string, int> m; oluştur. m["apple"] = 3; ve m["pear"] = 5; ekle. m.size()'ı yazdır.

Başlangıç kodu

main.cpp
#include <iostream>
#include <unordered_map>
#include <string>

// unordered_map oluştur ve iki öğe ekle

int main() {
    // boyutu yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <unordered_map>
#include <string>

int main() {
    std::unordered_map<std::string, int> m;
    m["apple"] = 3;
    m["pear"] = 5;
    std::cout << m.size() << std::endl;
    return 0;
}

Beklenen çıktı

2

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 unordered_map'in avantajı nedir?

main.cpp
std::unordered_map<std::string, int> m;
  • Sıralı anahtarlar
  • Ortalama O(1) erişim Doğru cevap
  • Daha az bellek
  • Sabit boyut

Açıklama: unordered_map ortalama O(1) erişim sağlar.

2 unordered_map bildirimi

Soru
std::unordered_map<std::string, ____> m;
Cevap
std::unordered_map<std::string, int> m;

Açıklama: Değer türü int'tir; std::unordered_map<std::string, int> m;

3 Kavramı eşle

Kavram Anlamı
hash table unordered_map temeli
O(1) lookup Hızlı erişim
unordered Sıralı değil
bucket Hash bölmesi

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