Aracılığıyla paylaş


hash_multimap Class

Not

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

Kapsayıcı sınıfı hash_multimap, standart Şablon Kütüphanesi'nin bir uzantısıdır ve hızlı her öğe değeri benzersiz olması gerekmez sıralama anahtarı olan bir çift olduğu koleksiyonu ve ilişkili veri değeri veri alma ve depolama için kullanılır.

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

Parametreler

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

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

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

  • Allocator
    Hash_multimap'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ğer olan ayırıcı*<*pair *<*const anahtar, yazın > >.

Notlar

Hash_multimap 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.

  • Birden çok, böylece birçok öğe veri değerleri ile ilişkilendirilmiş bir anahtar değeri olabilir öğelerini benzersiz bir anahtar olması gerekmez çünkü.

  • İlişkilendirilebilir çifti kapsayıcı öğe 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_multimap 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_multimap istediği ilişkilendirilebilir kapsayıcı olmalıdır. Bir bu tür bir yapı için anahtar sözcükler ile ilişkili dize değerleri sağlayarak, say, tanımları, sıralı bir listesini burada sözcükleri her zaman benzersiz olarak tanımlanmamış modeldir. Benzersiz anahtarlar, bunun yerine, anahtar sözcükler benzersiz olarak tanımlanmış olan, bir hash_map seçim kapsayıcı'e 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_multimap sırasını denetler saklı karma çağırarak siparişleri nitelikler nesne türü 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ı, 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 eşdeğer olmayan öğ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 ve x ve y dönüş değeri true veya false. İ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_multimap ü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_multimap sınıfı tarafından sağlanan sınıf üye işlevlerini ancak bir çift yönlü Yineleyici yineleyicidir Ekle ve hash_multimap ç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. Kendi hash_multimap gereksinimlerin her Yineleyici kavramı vardır 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ğin en az bir hash_multimap, ancak satıcının yineleyiciler aralığı hakkında konuşmak yapabilmek için yeterli olan [_First, _Last) ü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.

6ewecebk.collapse_all(tr-tr,VS.110).gifOluşturucular

hash_multimap

Belirli bir boyutta veya öğeleri belirli bir değer veya belirli bir liste oluşturur allocator veya başka bir kopyasını hash_multimap.

6ewecebk.collapse_all(tr-tr,VS.110).gifTypeDef

allocator_type

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

const_iterator

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

const_pointer

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

const_reference

Bir başvuru sağlayan bir tür bir const öğesinde depolanan bir hash_multimap 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_multimap.

difference_type

Öğelerin sayısını temsil etmek için kullanılan bir imzalı tamsayı türü bir hash_multimap 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_multimap.

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_multimap.

key_type

Her bir öğesi oluşturan sıralama anahtar nesneyi tanımlayan bir tür hash_multimap.

mapped_type

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

İşaretçi

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

başvuru

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

reverse_iterator

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

size_type

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

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_multimap.

6ewecebk.collapse_all(tr-tr,VS.110).gifÜye işlevleri

başlamak

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

hash_multimap::cbegin

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

hash_multimap::cend

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

Temizle

Tüm öğeleri siler bir hash_multimap.

count

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

hash_multimap::crbegin

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

hash_multimap::crend

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

hash_multimap::emplace

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

hash_multimap::emplace_hint

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

boş

Testleri, bir hash_multimap boş.

Son

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

equal_range

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

silme

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

find

Bir öğe konumunu adresleme bir yineleyici döndürür bir hash_multimap , 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_multimap.

Ekle

Bir öğe veya öğe aralığı ekler hash_multimap belirtilen konumda.

key_comp

Sipariş anahtarları için kullanılan karşılaştırma nesnenin bir kopyasını alır bir hash_multimap.

lower_bound

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

max_size

En fazla uzunluğunu döner hash_multimap.

rbegin

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

rend

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

boyutu

Yeni bir boyutunu belirtir bir hash_multimap.

takas

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

upper_bound

İlk öğe için bir yineleyici döndürür bir hash_multimap 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_multimap.

6ewecebk.collapse_all(tr-tr,VS.110).gifİşleçler

hash_multimap::operator=

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

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_multimap üyeleri