Yanıtlar:
Hash
programcının arayüzle uygulama ile karıştığı ( ve tam adını yazmak için çok tembel olan, yani HashTable
bunun yerine bir kısaltmaya başvurdu Hash
) , oldukça zayıf adlandırılmış bir veri yapısıdır .
Dictionary
olan “doğru” adı arayüzü (= bir ADT ), yani, bir birleştirici kabının (zorunlu olarak benzersiz) değerlerine harita (genellikle benzersiz) anahtarlar.
Bir hash tablodur biri (çalışmak açısından) oldukça iyi erişim özellikleri sağlar ve bu nedenle sık sık varsayılan uygulamadır böyle bir sözlüğü olası uygulama.
Böyle bir uygulamanın iki önemli özelliği vardır:
(Bir anahtarın bağlanabilir olması için, daha sonra bir dizide indeks olarak kullanılan bir anahtardan sayısal bir değer hesaplayabileceğimiz anlamına gelir.)
Anahtarlar üzerinde bir emir veren sözlük veri yapısının alternatif uygulamaları vardır - buna genellikle sıralanmış bir sözlük denir (ve diğer etkili uygulamalar olsa da, genellikle bir arama ağacı açısından uygulanır).
Özetle: Sözlük , anahtarları değerlere eşleyen bir ADT'dir. Bu ADT'nin karma tablosundan biri olan birkaç olası uygulaması vardır . Hash
bir yanlıştır, ancak bağlamda bir karma tablo açısından uygulanan bir sözlüğe eşdeğerdir.
Hash
bir karma tabloyla sınıfı uygulamak aslında mümkün değildir , çünkü Ruby 1.9 Hash
es bir karma tabloyu değilken ekleme sırasını korur. Yani, Ruby 1.9'da, isim Hash
artık uygulamayı yansıtmıyor bile.
"Sözlük" kavramının adıdır. Bir karma tablo olası bir uygulamadır.
Sözlük, hızlı aramalar / eklemeler için kullanılan herhangi bir veri yapısı uygulaması için verilen toplu terimdir. Bu, karma tablo, atlama listeleri, rb ağacı vb. Gibi çeşitli veri yapıları kullanılarak gerçekleştirilebilir / uygulanabilir. Karma tablo, bir sözlük uygulamak da dahil olmak üzere birçok amaç için yararlı olan spesifik bir veri yapısıdır.
Bir sözlük bir doğrudan içinde referans değerine bir anahtarı kullanır ilişkisel dizi .
yani (KEY => VALUE)
Bir karma daha sık , değerin olacağı bellekteki (veya daha kolay bir şekilde bir dizinin) konumunu hesaplamak için bir karma işlevini kullanan bir karma tablosu olarak tanımlanır . Karma, KEY'i girdi olarak alır ve çıktı olarak bir değer verir. Ardından bu değeri hafızaya veya dizi indeksine takın.
yani KEY => HASH FUNCTION => VALUE
Sanırım biri doğrudan diğeri değil. Karma işlevler de mükemmel olmayabilir ve bazen yanlış değeri gösteren bir dizin sağlayabilir. Ancak bu düzeltilebilir.
Bakılacak en iyi yer: Wikipedia ( ilişkisel dizi ve karma tablo )
unordered_map
Ne olduklarından ziyade ne yaptıklarını göstermek için çağrılırlar .