Aracılığıyla paylaş


hash_multiset Class

Not

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

Kapsayıcı sınıfı hash_multiset, standart Şablon Kütüphanesi'nin bir uzantısıdır ve depolama ve veri içerdiği öğelerin değerlerini anahtar değerleri olarak hizmet veren ve benzersiz olması gerekmez, bir koleksiyondan hızlı alma için kullanılır.

template <
   class Key, 
   class Traits=hash_compare<Key, less<Key> >, 
   class Allocator=allocator<Key> 
>
class hash_multiset

Parametreler

  • Tuş
    Hash_multiset içinde depolanan öğe veri türü.

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

  • Allocator
    Hash_multiset'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ı*<Key>.*

Notlar

Hash_multiset 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. Ayrıca, öğe değerlerini, anahtar değerlerinin nedeni Basit ilişkilendirilebilir bir kapsayıcı olmalarıdır.

  • 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. Hash_multiset de basit ilişkilendirilebilir bir kapsayıcı, çünkü kendi öğeleri de eşsizdir.

  • İşlevi sağladığından şablon sınıfı 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ı karma gerçekleştirir eklemeler, silmeler ve karşın bir süre sabit ortalama süre içinde teknikleri sıralamak için kapsayıcı öğe sayısına göre logaritması orantılı bulur. Bir kayıt kümesindeki bir öğenin değerini doğrudan değiştirilemez. Bunun yerine, eski değerleri silin ve yeni değerlerle öğeleri ekleyin.

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.

Hash_multiset değerleri kendi anahtarları ile ilişkilendirerek koşullar olduğunda istediği ilişkilendirilebilir kapsayıcı uygulama tarafından karşılayan gerekir. Öğeleri bir hash_multiset, birden çok ve anahtarlar benzersiz değildir böylece kendi sıralama anahtarı olarak hizmet olabilir. Bir yapı bu tür sıralı bir listesini, sözcüklerin birden çok kez oluşabilir sözcükleri söyleyin, modelidir. Sonra da bir hash_set uygun kapsayıcı yapıyı olabilirdi birden fazla sözcük, izin değil. Tanımları benzersiz değerler olarak benzersiz anahtar sözcükler listesine eklenmedi, sonra bir hash_map bu verileri içerecek şekilde uygun bir yapı olacaktır. Bunun yerine tanımları benzersiz değil, sonra bir hash_multimap seçim kapsayıcı olurdu.

Hash_multiset sırasını denetler saklı karma Nitelikler nesnesi türü çağırarak siparişleri 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 anahtar türü anahtar, çağrı ayırdedici nitelik(anahtar) 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 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_multiset ü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_multiset sınıfı tarafından sağlanan sınıf üye işlevlerini ancak bir çift yönlü Yineleyici yineleyicidir Ekle ve hash_multiset ç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_multiset 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_multiset, 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.

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

hash_multiset

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

wh3627k8.collapse_all(tr-tr,VS.110).gifTypeDef

allocator_type

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

const_iterator

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

const_pointer

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

const_reference

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

difference_type

Öğeleri içinde aynı adres iki yineleyiciler arasındaki fark sağlayan bir imzalı tamsayı türü hash_multiset.

Yineleyici

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

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

key_type

Açıklayan bir öğesi olarak depolanan bir nesne türü bir hash_set sıralama anahtarı olarak kendi kapasite.

İşaretçi

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

başvuru

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

reverse_iterator

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

size_type

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

value_compare

İki işlev nesneleri, iki öğe değerlerini karşılaştırabilirsiniz sınıf karşılaştırma, ikili bir karşılaştırma sağlar bir tür bir hash_multiset göreli belirlemek için sipariş ve birli öğeleri elindeki koşul.

value_type

Açıklayan bir öğesi olarak depolanan bir nesne türü bir hash_multiset değeri olarak kendi kapasite.

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

başlamak

İlk öğe gideren bir yineleyici döndürür hash_multiset.

hash_multiset::cbegin

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

hash_multiset::cend

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

Temizle

Tüm öğeleri siler bir hash_multiset.

count

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

hash_multiset::crbegin

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

hash_multiset::crend

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

hash_multiset::emplace

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

hash_multiset::emplace_hint

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

boş

Testleri, bir hash_multiset boş.

Son

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

equal_range

Yineleyicilerde çiftinin sırasıyla ilk öğe dönen bir hash_multiset belirtilen anahtar ve ilk öğe için büyük bir anahtarla hash_multiset anahtar daha büyük veya eşit bir anahtara sahip.

silme

Bir öğe veya öğeleri aralığı kaldırır bir hash_multiset belirtilen pozisyonları veya belirtilen anahtar eşleşen öğeleri kaldırır.

find

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

Ekle

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

key_comp

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

lower_bound

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

max_size

En fazla uzunluğunu döner hash_multiset.

rbegin

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

rend

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

boyutu

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

takas

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

upper_bound

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

value_comp

Karma ve anahtar değerlerini öğe sipariş için kullanılan karma Nitelikler nesnesi, bir kopyasını alır bir hash_multiset.

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

hash_multiset::operator=

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

Gereksinimler

Başlık: <hash_set>

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_set> Üyeler

hash_multiset üyeleri