Sobes.tech
Junior

C++'ta map ve unordered_map arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

std::map — anahtar-değer çiftlerini tutan, anahtar sırasına göre sıralanmış ilişkisel konteyner. Kırmızı-siyah ağaç tabanlıdır. Erişim, ekleme ve silme işlemlerinin süresi logaritmik (O(log n)).

std::unordered_map — anahtar-değer çiftlerini bir karma tablo içinde tutan ilişkisel konteyner. Öğeler sıralı değildir. Ortalama erişim, ekleme ve silme süresi sabit (O(1)), ancak en kötü durumda zincirleme çakışmaları nedeniyle doğrusal (O(n)) olabilir. Anahtar tipi için bir karma fonksiyonu ve eşitlik karşılaştırma operatörü (operator==) gerektirir.

Özellik std::map std::unordered_map
Temel Kırmızı-siyah ağaç Karma tablo
Öğelerin sıralanması Anahtar ile Yok
Ortalama işlem karmaşıklığı O(log n) O(1)
En kötü işlem karmaşıklığı O(log n) O(n) (çakışmalar nedeniyle)
Anahtar gereksinimleri < operatörü Karma fonksiyon, == operatörü
Bellek kullanımı Daha fazla Daha az (ortalama, değişebilir)

Kullanım örneği:

#include <map>
#include <unordered_map>
#include <string>

int main() {
    // std::map kullanımı
    std::map<std::string, int> my_map;
    my_map["apple"] = 1;
    my_map["banana"] = 2;
    my_map["orange"] = 3;
    // Öğeler anahtar sırasına göre sıralanır (apple, banana, orange)

    // std::unordered_map kullanımı
    std::unordered_map<std::string, int> my_unordered_map;
    my_unordered_map["apple"] = 1;
    my_unordered_map["banana"] = 2;
    my_unordered_map["orange"] = 3;
    // Öğeler sırasızdır
    
    return 0;
}