Aracılığıyla paylaş


hash_map Class

Not

Bu API artık kullanılmıyor.Alternatif unordered_map Class.

Depolar ve verileri hızlı bir şekilde her öğe değeri benzersiz bir sıralama anahtarı olan bir çift olduğu koleksiyonu ve ilişkili veri değeri alır.

template <
   class Key, 
   class Type, 
   class Traits=hash_compare<Key, less<Key> >, 
   class Allocator=allocator<pair <const Key, Type> > 
>
class hash_map

Parametreler

  • Tuş
    Hash_map içinde depolanan anahtar veri türü.

  • Türü
    Hash_map içinde depolanan öğe veri türü.

  • Traits
    İki işlev nesneleri içeren türü anahtar değerleri işaretsiz tamsayı türünde öğe eşleme birli koşul sınıfı iki öğe değeri olarak bunların göreceli sırası ve bir karma işlev, belirlemek için sıralama anahtarları karşılaştırmak için Karşılaştır biri olan size_t. Bu bağımsız değişkeni isteğe bağlıdır ve hash_compare <anahtar, daha az <anahtar> > varsayılan değerdir.

  • Allocator
    Hash_map's ayırma ve bellek ayırmayı kaldırma hakkındaki ayrıntıları saklar saklı ayırıcı nesnesini gösteren türü. Bu bağımsız değişkeni isteğe bağlıdır ve varsayılan değeri ayırıcı < çifti < const anahtar, türü**> >**.

Notlar

Hash_map aşağıdaki gibidir:

  • Bir değişken boyutu kapsayıcı öğe değerlerinin verimli alınmasını destekler ilişkili bir anahtar değerine dayalı bir ilişkilendirilebilir container.

  • Geri alınamaz, çünkü onun öğelerine erişmek için çift yönlü Yineleyici sağlar.

  • Karma, çünkü kendi öğeleri öğelerinin anahtar değerleri için uygulanan bir karma işlev değerini temel alarak demetleri halinde gruplandırılır.

  • Alt öğelerin her biri benzersiz bir anahtar sahip anlamda benzersiz.

  • İlişkilendirilebilir çifti kapsayıcı öğe veri değerlerini anahtar değerleri birbirinden farklı olduğundan.

  • Bir şablon sınıf işlevlerini sağladığından genel ve böylece bağımsız olarak belirli öğelerini veya anahtarları olarak yer alan veri türü. Öğeleri ve anahtarları için kullanılacak veri türleri yerine, parametre sınıf şablonu ve karşılaştırma işlevi ve ayırıcı olarak belirtilir.

Sıralama üzerinden karma başlıca faydası, daha verimli olur; başarılı bir karma eklemeler, silmeler yapar ve bir süre karşılaştırıldığında ortalama sabit zaman teknikleri sıralama kapsayıcısında öğe sayısına göre logaritması orantılı bulur. Bir hash_map içindeki bir öğenin değerini ancak değil ilişkili anahtar değerini, doğrudan değiştirilebilir. Bunun yerine, eski öğelerle ilişkili anahtar değerleri silinir ve yeni anahtar değerleri eklenen yeni öğelerle ilişkili olması gerekir.

Kapsayıcı türü seçimi genel arama türü esas alınması gereken ve uygulama tarafından gerekli ekleme. Karma ilişkilendirilebilir kapsayıcıları arama, ekleme ve kaldırma işlemleri için optimize edilmiştir. Bu işlemler açıkça destek üye işlevleri ortalama sabit ve konteynerdeki öğelerin sayısını bağımlı olmayan bir süre içinde gerçekleştirilmeden iyi tasarlanmış karma işlevi, birlikte kullanıldığında etkilidir. İyi tasarlanmış karma işlevi uniform bir dağılım karma değer üreten ve Çarpışmaları, burada bir çarpışma DISTINCT anahtar değerleri, aynı karma değere eşleştirildiğinde gerçekleştirilmiş olur sayısını en aza indirir. En kötü durumda, en kötü olası karma işlevi ile tamamlanmış işlem sayısı (doğrusal zaman) dizideki öğelerin sayısı orantılıdır.

Uygulama tarafından kendi anahtarlarla değerleri ilişkilendirme koşullar karşılandığında hash_map istediği ilişkilendirilebilir kapsayıcı olmalıdır. Sıralı bir liste yapısı bu tür modeldir benzersiz olarak tekrarlanan anahtar sözcükler ile ilişkili dize değerlerini, söyleyin, tanımları sağlar. Sonra anahtarlar benzersiz değil, sözcüklerin doğru birden fazla tanım bunun yerine sahipse, bir hash_multimap seçim kapsayıcı olacaktır. Diğer taraftan, yalnızca sözcüklerin listesini depolanmakta, bir hash_set doğru kap'e olacaktır. Sonra birden fazla sözcük izin verilseydi, bir hash_multiset uygun kapsayıcı yapıyı olacaktır.

Hash_map sırasını denetler saklı karma çağırarak siparişleri nitelikler sınıfının value_compare. Bu saklı nesne üye işlevini çağırarak erişilebileceği key_comp. Böyle bir işlev nesne sınıfın bir nesnesi ile aynı davranır gerekir hash_compare< anahtar, daha az <Key>>. Tüm değerler için özellikle, _Key türü anahtar, çağrı nitelikler(_Key ) türü değerleri dağıtımını gözüken size_t.

Genel olarak, öğeleri yalnızca küçüktür bu sırayı oluşturmak için karşılaştırılabilir: herhangi iki öğe verilen böylece, onu (içinde her ikisi de diğer küçüktür anlamda) eşdeğer veya diğer daha az olduğunu belirlenebilir. Bu bir nonequivalent öğeleri sıralamada sonuçlanır. Daha fazla Teknik Not üzerinde katı bir zayıf standart matematiksel anlamda sipariş işleminiz ikili bir karşılaştırma karşılaştırma işlevidir. İkili karşılaştırma f(x,y), iki bağımsız değişken nesneleri olan bir işlevi nesnesidir x ve y ve dönüş değeri doğru veya yanlış. İkili karşılaştırma dönüşsüz, ters ve geçişli ve eşdeğerlik geçişli, iki yerde nesneleri sıralamaya sıkı bir zayıf olduğu bir hash_map üzerinde uygulanan bir sıralama x ve y ne zaman eşdeğer olarak tanımlanan her ikisi de f(x,y) ve f(y,x) yanlış ise. Anahtarlar arasındaki eşitlik daha güçlü koşulu, eşdeğerlik geçiyorsa, sipariş toplam (içinde birbirlerine göre sıralanmış tüm öğeleri algılama) olur ve eşleşen anahtarları birbirinden indiscernible.

Karma işlevi, sıralama işlevi ve geçerli kapsayıcı nesnesinde saklanan karma tablo boyutu gerçek kontrollü dizideki öğelerin sırasını bağlıdır. Böylece genel kontrollü dizideki öğelerin sırasını tahmin edemezsiniz geçerli karma tablo boyutu belirlenemiyor. Öğeleri ekleme yok yineleyiciler geçersiz kılar ve yalnızca özellikle sırasında kaldırılan öğeleri işaret ettiği yineleyiciler öğeleri kaldırma geçersiz kılar.

Hash_map sınıfı tarafından sağlanan sınıf üye işlevlerini ancak bir çift yönlü Yineleyici yineleyicidir Ekle ve hash_map çift yönlü yineleyiciler sınıfı tarafından garanti olandan daha az olan işlevselliği gereksinimleri daha zayıf giriş Yineleyici şablon parametresi ele sürümlere sahip. Farklı bir yineleyici kavramları tarafından iyileştirme işlevlerine içinde ilgili aile oluştururlar. Her Yineleyici kavramı kendi gereksinimlerine sahiptir ve bunlarla algoritmaları varsayımlarıyla Yineleyici türü tarafından sağlanan gereksinimlerine sınırlamak gerekir. Bu, bazı nesnesine başvurmak için bir giriş Yineleyici veta ve bunun için sıradaki sonraki Yineleyici 'er olduğunu kabul. Bu işlevselliği en az sayıda, ancak satıcının yineleyiciler aralığı hakkında konuşmak yapabilmek için yeterli olan [_First, _Last) sınıfı üye işlevleri bağlamında.

Visual C++ .NET 2003, üyeleri de <hash_map> ve <hash_set> başlık dosyaları artık std ad alanında bulunan, ancak bunun yerine stdext ad alanına taşınmış. Bkz: ad stdext daha fazla bilgi için.

0d462wfh.collapse_all(tr-tr,VS.110).gifOluşturucular

hash_map

Oluşturan bir hash_map yani boş veya yani bir kopyasını tüm veya bazı diğer parçası hash_map.

0d462wfh.collapse_all(tr-tr,VS.110).gifTypeDef

allocator_type

Temsil eden bir tür allocator için sınıf hash_map nesne.

const_iterator

Çift yönlü Yineleyici, can sağlayan bir tür okuma bir const öğesinde hash_map.

const_pointer

Bir işaretçi sağlar bir tür bir const öğesinde bir hash_map.

const_reference

Bir başvuru sağlayan bir tür bir const öğesinde depolanan bir hash_map okumak ve gerçekleştirmek için const işlemleri.

const_reverse_iterator

Herhangi bir çift yönlü Yineleyici, can sağlayan bir türü okuma const öğesinde hash_map.

difference_type

Öğelerin sayısını temsil etmek için kullanılan bir imzalı tamsayı türü bir hash_map yineleyiciler göre sıralanmasını öğeler arasındaki aralık.

Yineleyici

Çift yönlü Yineleyici sağlayan bir tür okuma veya herhangi bir öğe olarak değiştirmek bir hash_map.

key_compare

İki öğe içinde göreli sırasını belirlemek için iki sýralama anahtarýný karşılaştıran işlev nesne sağlayan bir türü hash_map.

key_type

Her bir öğesi oluşturan sıralama anahtar nesne türü açıklar hash_map.

mapped_type

Depolanan veri türünü temsil eden bir tür bir hash_map.

İşaretçi

Bir öğe için bir işaretçi sağlar bir tür bir hash_map.

başvuru

Depolanan bir öğeye başvuru sağlayan bir tür bir hash_map.

reverse_iterator

Çift yönlü Yineleyici sağlayan bir tür okuma veya değiştirme tersine çevrilmiş bir öğe hash_map.

size_type

İçindeki öğelerin sayısını gösteren bir işaretsiz tamsayı türü bir hash_map.

value_type

İki öğe kendi göreli sırada belirlemek için sıralama anahtarları olarak karşılaştırabilirsiniz bir işlev nesnesi sağlayan bir türü hash_map.

0d462wfh.collapse_all(tr-tr,VS.110).gifÜye işlevleri

hash_map::at

Bir öğe bulur bir hash_map ile belirtilen bir anahtar değeri.

başlamak

İlk öğe adresleme bir yineleyici döndürür hash_map.

hash_map::cbegin

İlk öğe adresleme const bir yineleyici döndürür hash_map.

hash_map::cend

İzleyen'deki son öğe konumu adresleri const bir yineleyici döndürür bir hash_map.

Temizle

Tüm öğeleri siler bir hash_map.

count

İçindeki öğelerin sayısını verir bir hash_map parametresi tarafından belirtilen anahtar anahtar eşleşir.

hash_map::crbegin

İlk öğe tersine çevrilmiş bir adresleme const bir yineleyici döndürür hash_map.

hash_map::crend

Tersine çevrilmiş bir'deki son öğe izleyen konum adresleri const bir yineleyici döndürür hash_map.

hash_map::emplace

Yerlerine içinde yapılandırılan bir öğe ekler bir hash_map.

hash_map::emplace_hint

Yerlerine içinde yapılandırılan bir öğe ekler bir hash_map, yerleştirme İpucu ile.

boş

Testleri, bir hash_map boş.

Son

İzleyen'deki son öğe konumu gideren bir yineleyici döndürür bir hash_map.

equal_range

İlk öğe için sırasıyla, yineleyiciler, bir Çift döndürür bir hash_map belirtilen anahtar ve ilk öğe için büyük bir anahtarla hash_map anahtar daha büyük veya eşit bir anahtara sahip.

silme

Bir öğe veya öğeleri aralığı kaldırır bir hash_map belirtilen konumlardan

find

Bir öğe konumunu adresleme bir yineleyici döndürür bir hash_map , belirtilen anahtar için eşdeğer bir anahtarı vardır.

get_allocator

Bir kopyasını verir allocator nesnesini oluşturmak için kullanılan hash_map.

Ekle

Bir öğe veya öğe aralığı ekler bir hash_map.

key_comp

İlk öğe için bir yineleyici döndürür bir hash_map , belirtilen anahtar daha büyük veya eşit bir anahtar değeri ile.

lower_bound

İlk öğe için bir yineleyici döndürür bir hash_map , belirtilen anahtar daha büyük veya eşit bir anahtar değeri ile.

max_size

En fazla uzunluğunu döner hash_map.

rbegin

İlk öğe tersine çevrilmiş bir adresleme bir yineleyici döndürür hash_map.

rend

Tersine çevrilmiş bir'deki son öğe izleyen konum gideren bir yineleyici döndürür hash_map.

boyutu

İçindeki öğelerin sayısını verir hash_map.

takas

İki öğe değişimi hash_maps.

upper_bound

İlk öğe için bir yineleyici döndürür bir hash_map belirtilen anahtar büyük bir anahtarla değer.

value_comp

Sipariş öğesi değerleri için kullanılan karşılaştırma nesnenin bir kopyasını alır bir hash_map.

0d462wfh.collapse_all(tr-tr,VS.110).gifİşleçler

operator]

Bir öğenin içine ekler bir hash_map ile belirtilen bir anahtar değeri.

hash_map::operator=

Öğeleri değiştirir bir hash_map başka bir kopyası ile hash_map.

Gereksinimler

Başlık: <hash_map>

Ad alanı: stdext

Ayrıca bkz.

Başvuru

Standart C++ Kitaplığı'nda iş parçacığı güvenliği

Standart Şablon Kütüphanesi

Diğer Kaynaklar

<hash_map> Üyeler

hash_map üyeleri