Aracılığıyla paylaş


hash_multiset Sınıfı

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Kapsayıcı sınıfı hash_multiset, C++ Standart Kitaplığı'nın bir uzantısıdır ve içerdiği öğelerin değerlerinin anahtar değerleri olarak görev aldığı ve benzersiz olması gerekmeyen bir koleksiyondan verilerin depolanması ve hızlı alınması için kullanılır.

Sözdizimi

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

Parametreler

Anahtar
hash_multiset depolanacak öğe veri türü.

Özellik
İki işlev nesnesi içeren tür, sınıfından biri, iki öğe değerini sıralama anahtarları olarak karşılaştırarak göreli düzenlerini belirlemek için iki öğe değerini karşılaştırabilen ve öğelerin birli koşul eşleme anahtar değerlerini türündeki işaretsiz tamsayılara eşleyen bir karma işlevi olan türü size_tkarşılaştırır. Bu bağımsız değişken isteğe bağlıdır ve hash_compare<Key, less<Key> > varsayılan değerdir.

Ayırıcı
hash_multiset ayırması ve bellek ayırması hakkındaki ayrıntıları kapsülleyen depolanmış ayırıcı nesnesini temsil eden tür. Bu bağımsız değişken isteğe bağlıdır ve varsayılan değerdir allocator<Key>.

Açıklamalar

hash_multiset:

  • İlişkili bir anahtar değerine dayalı öğe değerlerinin verimli alınmasını destekleyen bir değişken boyutu kapsayıcı olan ilişkilendirilebilir bir kapsayıcı. Dahası, basit bir ilişkilendirilebilir kapsayıcıdır, çünkü öğelerinin değerleri kendi anahtar değerleridir.

  • Çift yönlüdür, çünkü öğelerine erişmek için çift yönlü bir yineleyici sağlar.

  • Karma, çünkü öğeleri öğelerinin anahtar değerlerine uygulanan bir karma işlevinin değerine göre demetler halinde gruplandırılır.

  • Benzersizdir, çünkü öğelerinin her birinde benzersiz bir anahtar olması gerekir. hash_multiset aynı zamanda basit bir ilişkilendirici kapsayıcı olduğundan, öğeleri de benzersizdir.

  • Sağladığı işlevsellik genel olduğundan ve öğe veya anahtar olarak yer alan belirli veri türünden bağımsız olduğundan sınıf şablonu. Öğeler ve anahtarlar için kullanılacak veri türleri, karşılaştırma işlevi ve ayırıcı ile birlikte bir sınıf şablonunda parametreler olarak belirtilir.

Sıralamaya göre karma oluşturmanın temel avantajı daha yüksek verimliliktir: Başarılı bir karma ekleme, silme işlemleri gerçekleştirir ve sıralama teknikleri için kapsayıcıdaki öğe sayısının logaritmasıyla orantılı bir süreyle karşılaştırıldığında sabit ortalama süre bulur. Bir kümedeki bir öğenin değeri doğrudan değiştirilemez. Bunun yerine, eski değerleri silmeniz ve yeni değerlere sahip öğeler eklemeniz gerekir.

Kapsayıcı türünün seçimi genelde uygulamanın gerektirdiği arama ve ekleme türüne dayalı olmalıdır. Karma ilişkilendirme kapsayıcıları arama, ekleme ve kaldırma işlemleri için iyileştirilmiştir. Bu işlemleri açıkça destekleyen üye işlevleri, iyi tasarlanmış bir karma işleviyle kullanıldığında verimlidir ve bunları ortalama sabit olan ve kapsayıcıdaki öğe sayısına bağımlı olmayan bir zamanda gerçekleştirir. İyi tasarlanmış bir karma işlevi, karma değerlerin tekdüzen bir dağılımını oluşturur ve çakışma sayısını en aza indirir. Burada, farklı anahtar değerleri aynı karma değere eşlendiğinde çakışma olduğu söylenir. En kötü durumda, mümkün olan en kötü karma işleviyle, işlem sayısı dizideki öğe sayısıyla orantılıdır (doğrusal süre).

Değerleri anahtarlarıyla ilişkilendiren koşullar uygulama tarafından karşılandığında, hash_multiset tercih edilen ilişkilendirilebilir kapsayıcı olmalıdır. Bir hash_multiset öğeleri birden çok olabilir ve kendi sıralama anahtarları olarak görev yapabilir, bu nedenle anahtarlar benzersiz değildir. Bu tür bir yapı modeli, sözcüklerin birden çok defa geçebildiği sıralı bir sözcükler listesindedir. Sözcüklerin birden çok örneğine izin verilmemiş olsaydı, hash_set uygun kapsayıcı yapısı olurdu. Benzersiz tanımlar, benzersiz anahtar sözcükler listesine değer olarak eklenmişse, hash_map bu verileri içerecek uygun bir yapı olacaktır. Bunun yerine tanımlar benzersiz değilse, bir hash_multimap tercih edilen kapsayıcı olacaktır.

hash_multiset, value_compare türündeki depolanmış karma özellikler nesnesini çağırarak denetlediği sırayı sıralar. Bu depolanan nesneye üye işlevi key_comp çağrılarak erişilebilir. Böyle bir işlev nesnesi sınıfının hash_compare<Key, less<Key> >nesnesiyle aynı şekilde davranmalıdır. Özellikle, türündeki tüm değerler Key çağrısı Trait(Key) türündeki değerlerin dağılımını size_tverir.

Genelde, bu sıralamayı oluşturmak için öğelerin yalnızca küçüktür biçiminde karşılaştırılabilir olması gerekir; böylece, herhangi iki öğe belirtildiğinde, eşit oldukları (yani birinin diğerinden daha küçük olmadığı anlamında) veya birinin diğerinden küçük olduğu belirlenebilir. Bu, denk olmayan öğeler arasında bir sıralamaya neden olur. Daha teknik bir not üzerinde, karşılaştırma işlevi standart matematiksel anlamda katı bir zayıf sıralama sevk eden ikili bir koşuldur. İkili koşul f( x, y) iki bağımsız değişken nesnesi x ve y ile true veya false dönüş değerine sahip bir işlev nesnesidir. bir hash_multiset uygulanan sıralama, ikili koşul esnek değilse, antisymetrik ve geçişliyse ve denklik geçişliyse, hem f( x, y) hem de f( y, x) yanlış olduğunda iki x ve y nesnesinin eşdeğer olarak tanımlandığı katı bir zayıf sıralamadır. Anahtarlar arasındaki eşitliğinin daha güçlü koşulu bu denkliğin yerini alırsa, sıralama (içindeki tüm öğelerin birbirine göre sıralanması anlamında) toplam haline gelir ve eşleşen anahtarlar birbirinden ayırt edilemez olacaktır.

Denetlenen dizideki öğelerin gerçek sırası karma işlevine, sıralama işlevine ve kapsayıcı nesnesinde depolanan karma tablosunun geçerli boyutuna bağlıdır. Karma tablosunun geçerli boyutunu belirleyemezsiniz, bu nedenle denetimli dizideki öğelerin sırasını genel olarak tahmin edemezsiniz. Öğelerin eklenmesi hiçbir yineleyiciyi geçersiz kılmaz; öğelerin kaldırılması yalnızca özellikle kaldırılan öğeleri gösteren yineleyicileri geçersiz kılar.

hash_multiset sınıfı tarafından sağlanan yineleyici çift yönlü bir yineleyicidir, ancak sınıf üyesi işlevleri ekleme ve hash_multiset, işlev gereksinimleri çift yönlü yineleyici sınıfı tarafından garanti edilenden daha düşük olan şablon parametreleri olarak daha zayıf bir giriş yineleyicisi alan sürümlere sahiptir. Farklı yineleyici kavramları, işlevselliklerindeki iyileştirmelere göre ilgili bir aile biçimlendirir. Her yineleyici kavramının kendi hash_multiset gereksinimleri vardır ve bunlarla çalışan algoritmaların varsayımlarını bu tür yineleyici tarafından sağlanan gereksinimlerle sınırlaması gerekir. Bir giriş yineleyicinin bazı nesnelere başvurusunun kaldırılacağı ve dizideki sonraki yineleyiciye artırılabileceği varsayılabilir. Bu en az işlev hash_multiset, ancak sınıf üyesi işlevleri bağlamında bir dizi yineleyici [ first, last) hakkında anlamlı bir şekilde konuşabilmek yeterlidir.

Oluşturucular

Oluşturucu Açıklama
hash_multiset Boş olan veya başka hash_multisetbir öğesinin tümünün veya bir bölümünün kopyası olan bir hash_multiset oluşturur.

Tür tanımları

Tür adı Açıklama
allocator_type Nesnenin sınıfını allocatorhash_multiset temsil eden bir tür.
const_iterator içindeki bir öğeyi constokuyabilen çift yönlü bir yineleyici sağlayan türhash_multiset.
const_pointer içindeki bir const öğeye işaretçi sağlayan tür hash_multiset.
const_reference okuma ve gerçekleştirme const işlemleri için içinde hash_multiset depolanan bir const öğeye başvuru sağlayan bir tür.
const_reverse_iterator içindeki constherhangi hash_multiset bir öğeyi okuyabilen çift yönlü bir yineleyici sağlayan tür.
difference_type Aynı hash_multisetiçindeki öğeleri adresleyen iki yineleyici arasındaki farkı sağlayan imzalı bir tamsayı türü.
Yineleyici bir içindeki herhangi bir öğeyi okuyabilen veya değiştirebilen çift yönlü bir yineleyici sağlayan tür hash_multiset.
key_compare içindeki iki öğeye hash_multisetgöre sırasını belirlemek için iki sıralama anahtarını karşılaştırabilen bir işlev nesnesi sağlayan tür.
key_type Kapasitede bir öğesinin öğesi hash_set olarak depolanan bir nesneyi sıralama anahtarı olarak tanımlayan tür.
Işaretçi içindeki bir öğeye işaretçi sağlayan tür hash_multiset.
referans içinde depolanan bir öğeye başvuru sağlayan tür hash_multiset.
reverse_iterator Ters çevrilmiş hash_multisetiçindeki bir öğeyi okuyabilen veya değiştirebilen çift yönlü bir yineleyici sağlayan tür.
size_type içindeki öğe sayısını temsil eden işaretsiz bir hash_multisettamsayı türü.
value_compare İki işlev nesnesi sağlayan bir tür, göreli sırasını belirlemek için öğesinin hash_multiset iki öğe değerini karşılaştırabilen bir sınıf karşılaştırması ikili koşulu ve öğeleri karma hale getiren bir birli koşul.
value_type Kapasitede bir öğesinin öğesi hash_multiset olarak depolanan bir nesneyi değer olarak tanımlayan tür.

Üye işlevleri

Üye işlevi Açıklama
başlamak içindeki hash_multisetilk öğeyi ele alan bir yineleyici döndürür.
cbegin içindeki ilk öğeyi hash_multisetele alan bir sabit yineleyici döndürür.
cend bir içindeki son öğenin başarılı olduğu konumu ele alan bir hash_multisetsabit yineleyici döndürür.
berrak öğesinin hash_multisettüm öğelerini siler.
sayı Anahtarı parametre tarafından belirtilen anahtarla eşleşen bir hash_multiset içindeki öğelerin sayısını verir
crbegin ters çevrilmiş hash_multisetiçindeki ilk öğeyi ele alan bir sabit yineleyici döndürür.
crend Ters çevrilmiş hash_multisetbir içindeki son öğeyi başaran konumu ele alan bir sabit yineleyici döndürür.
yer değiştirme içine yerinde inşa edilmiş bir hash_multisetöğe ekler.
emplace_hint Bir yerleştirme ipucuyla içine yerinde hash_multisetinşa edilmiş bir öğe ekler.
boş boş hash_multiset olup olmadığını sınar.
son içindeki son öğenin başarılı olduğu konumu ele alan bir hash_multisetyineleyici döndürür.
equal_range Belirtilen anahtardan büyük bir anahtara sahip bir anahtarı olan içindeki ilk öğeye hash_multiset ve anahtara eşit veya daha büyük bir anahtarla içindeki ilk öğeye hash_multiset sırasıyla bir yineleyici çifti döndürür.
silmek Belirtilen konumlardan bir öğeyi veya bir hash_multiset öğe aralığını kaldırır veya belirtilen bir anahtarla eşleşen öğeleri kaldırır.
bulmak Belirtilen anahtara eşdeğer bir anahtara sahip bir hash_multiset öğenin konumunu adresleyen bir yineleyici döndürür.
get_allocator oluşturmak için kullanılan nesnesinin allocatorbir kopyasını hash_multiset döndürür.
sokmak içine bir öğe veya öğe hash_multisetaralığı ekler.
key_comp içindeki anahtarları sıralamak için kullanılan karşılaştırma nesnesinin bir hash_multisetkopyasını alır.
lower_bound Belirtilen anahtara eşit veya bundan büyük bir anahtara sahip bir içindeki ilk öğeye hash_multiset bir yineleyici döndürür.
max_size değerinin uzunluk üst sınırını hash_multisetdöndürür.
rbegin ters çevrilmiş hash_multisetiçindeki ilk öğeyi ele alan bir yineleyici döndürür.
yarmak Ters çevrilmiş hash_multisetbir içindeki son öğeyi başaran konumu ele alan bir yineleyici döndürür.
boyut içindeki hash_multisetöğe sayısını döndürür.
değiş tokuş etmek İki hash_multisetöğesinin öğelerini değiştirir.
upper_bound Belirtilen anahtara eşit veya bundan büyük bir hash_multiset anahtara sahip olan bir içindeki ilk öğeye bir yineleyici döndürür.
value_comp içindeki öğe anahtarı değerlerini karma ve sıralamak için kullanılan karma özellik nesnesinin bir hash_multisetkopyasını alır.

İşleçler

Operatör Açıklama
hash_multiset::operator= hash_multiset öğelerini başka bir hash_multiset kopyasıyla değiştirir.

Gereksinimler

Üst Bilgi:<hash_set>

Ad alanı: stdext

hash_multiset::allocator_type

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

hash_multiset nesnesi için ayırıcı sınıfını temsil eden bir tür.

typedef list<typename Traits::value_type, typename Traits::allocator_type>::allocator_type allocator_type;

Örnek

Örnek için get_allocator örneğine bakın: allocator_type

hash_multiset::begin

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

hash_multiset ilk öğeyi ele alan bir yineleyici döndürür.

const_iterator begin() const;

iterator begin();

Dönüş Değeri

hash_multiset ilk öğeyi veya boş bir hash_multiset başarılı olan konumu ele alan çift yönlü bir yineleyici.

Açıklamalar

değerinin dönüş değeri begin bir const_iteratoröğesine atanmışsa, hash_multiset nesnesindeki öğeler değiştirilemez. dönüş değeri begin bir iteratoröğesine atanmışsa, hash_multiset nesnesindeki öğeler değiştirilebilir.

Örnek

// hash_multiset_begin.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1;
   hash_multiset <int>::iterator hms1_Iter;
   hash_multiset <int>::const_iterator hms1_cIter;

   hms1.insert( 1 );
   hms1.insert( 2 );
   hms1.insert( 3 );

   hms1_Iter = hms1.begin( );
   cout << "The first element of hms1 is " << *hms1_Iter << endl;

   hms1_Iter = hms1.begin( );
   hms1.erase( hms1_Iter );

   // The following 2 lines would err because the iterator is const
   // hms1_cIter = hms1.begin( );
   // hms1.erase( hms1_cIter );

   hms1_cIter = hms1.begin( );
   cout << "The first element of hms1 is now " << *hms1_cIter << endl;
}
The first element of hms1 is 1
The first element of hms1 is now 2

hash_multiset::cbegin

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

hash_multiset ilk öğeyi ele alan bir sabit yineleyici döndürür.

const_iterator cbegin() const;

Dönüş Değeri

hash_multiset ilk öğeyi veya boş hash_multisetbir öğesinin başarılı olduğu konumu ele alan iki yönlü bir çift yönlü yineleyici.

Açıklamalar

dönüş değeriyle cbegin, nesnedeki hash_multiset öğeler değiştirilemez.

Örnek

// hash_multiset_cbegin.cpp
// compile with: /EHsc
#include <hash_multiset>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hs1;
   hash_multiset <int>::const_iterator hs1_cIter;

   hs1.insert( 1 );
   hs1.insert( 2 );
   hs1.insert( 3 );

   hs1_cIter = hs1.cbegin( );
   cout << "The first element of hs1 is " << *hs1_cIter << endl;
}
The first element of hs1 is 1

hash_multiset::cend

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

bir hash_multiset son öğesinin başarılı olduğu konumu ele alan bir sabit yineleyici döndürür.

const_iterator cend() const;

Dönüş Değeri

bir hash_multiset son öğeyi başaran konumu ele alan iki yönlü bir sabit yineleyici. hash_multiset boşsa, öğesini seçinhash_multiset::cend == hash_multiset::begin.

Açıklamalar

cend , yineleyicinin sonuna hash_multisetulaşıp ulaşmadığını test etmek için kullanılır. tarafından cend döndürülen değer başvurulmamalıdır.

Örnek

// hash_multiset_cend.cpp
// compile with: /EHsc
#include <hash_multiset>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hs1;
   hash_multiset <int> :: const_iterator hs1_cIter;

   hs1.insert( 1 );
   hs1.insert( 2 );
   hs1.insert( 3 );

   hs1_cIter = hs1.cend( );
   hs1_cIter--;
   cout << "The last element of hs1 is " << *hs1_cIter << endl;
}
The last element of hs1 is 3

hash_multiset::clear

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

bir hash_multiset tüm öğelerini siler.

void clear();

Örnek

// hash_multiset_clear.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1;

   hms1.insert( 1 );
   hms1.insert( 2 );

   cout << "The size of the hash_multiset is initially " << hms1.size( )
        << "." << endl;

   hms1.clear( );
   cout << "The size of the hash_multiset after clearing is "
        << hms1.size( ) << "." << endl;
}
The size of the hash_multiset is initially 2.
The size of the hash_multiset after clearing is 0.

hash_multiset::const_iterator

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

hash_multiset bir öğeyi okuyabilen çift yönlü yineleyici sağlayan bir const tür.

typedef list<typename Traits::value_type, typename Traits::allocator_type>::const_iterator const_iterator;

Açıklamalar

Bir öğenin değerini değiştirmek için bir tür const_iterator kullanılamaz.

Örnek

kullanarak bir örnek için const_iterator örneğine bakın.

hash_multiset::const_pointer

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

hash_multiset bir const öğeye işaretçi sağlayan tür.

typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::const_pointer const_pointer;

Açıklamalar

Bir öğenin değerini değiştirmek için bir tür const_pointer kullanılamaz.

Çoğu durumda, bir hash_multiset nesnesindeki öğelere erişmek için bir const const_iterator kullanılmalıdır.

hash_multiset::const_reference

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

okuma ve gerçekleştirme const işlemleri için bir const hash_multiset depolanan bir öğeye başvuru sağlayan bir tür.

typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::const_reference const_reference;

Örnek

// hash_multiset_const_reference.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1;

   hms1.insert( 10 );
   hms1.insert( 20 );

   // Declare and initialize a const_reference &Ref1
   // to the 1st element
   const int &Ref1 = *hms1.begin( );

   cout << "The first element in the hash_multiset is "
        << Ref1 << "." << endl;

   // The following line would cause an error because the
   // const_reference cannot be used to modify the hash_multiset
   // Ref1 = Ref1 + 5;
}
The first element in the hash_multiset is 10.

hash_multiset::const_reverse_iterator

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

hash_multiset herhangi const bir öğeyi okuyabilen çift yönlü bir yineleyici sağlayan tür.

typedef list<typename Traits::value_type, typename Traits::allocator_type>::const_reverse_iterator const_reverse_iterator;

Açıklamalar

Bir tür const_reverse_iterator bir öğenin değerini değiştiremez ve hash_multiset tersten yinelemek için kullanılır.

Örnek

nasıl bildirilip kullanılacağına ilişkin bir örnek için rend örneğine const_reverse_iteratorbakın.

hash_multiset::count

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Anahtarı parametre tarafından belirtilen anahtarla eşleşen bir hash_multiset öğe sayısını döndürür.

size_type count(const Key& key) const;

Parametreler

anahtar
hash_multiset eşleştirilecek öğelerin anahtarı.

Dönüş Değeri

parametre tarafından belirtilen anahtara sahip hash_multiset öğe sayısı.

Açıklamalar

üye işlevi aşağıdaki aralıktaki öğe sayısını döndürür:

[ lower_bound(anahtar), upper_bound(anahtar) ).

Örnek

Aşağıdaki örnekte hash_multiset::count üye işlevinin kullanımı gösterilmektedir.

// hash_multiset_count.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
    using namespace std;
    using namespace stdext;
    hash_multiset<int> hms1;
    hash_multiset<int>::size_type i;

    hms1.insert(1);
    hms1.insert(1);

    // Keys do not need to be unique in hash_multiset,
    // so duplicates may exist.
    i = hms1.count(1);
    cout << "The number of elements in hms1 with a sort key of 1 is: "
         << i << "." << endl;

    i = hms1.count(2);
    cout << "The number of elements in hms1 with a sort key of 2 is: "
         << i << "." << endl;
}
The number of elements in hms1 with a sort key of 1 is: 2.
The number of elements in hms1 with a sort key of 2 is: 0.

hash_multiset::crbegin

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Ters çevrilmiş bir hash_multiset ilk öğeyi ele alan bir sabit yineleyici döndürür.

const_reverse_iterator crbegin() const;

Dönüş Değeri

Ters çevrilmiş bir hash_multiset içindeki ilk öğeyi veya ters çevrilmemiş hash_multisetiçindeki son öğeyi ele alan en sabit ters çift yönlü yineleyici.

Açıklamalar

crbegin, hash_multiset::beginhash_multisetters çevrilmiş bir hash_multisetile kullanılır.

dönüş değeriyle crbeginhash_multiset nesne değiştirilemez.

crbegin geriye doğru yinelemek hash_multiset için kullanılabilir.

Örnek

// hash_multiset_crbegin.cpp
// compile with: /EHsc
#include <hash_multiset>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hs1;
   hash_multiset <int>::const_reverse_iterator hs1_crIter;

   hs1.insert( 10 );
   hs1.insert( 20 );
   hs1.insert( 30 );

   hs1_crIter = hs1.crbegin( );
   cout << "The first element in the reversed hash_multiset is "
        << *hs1_crIter << "." << endl;
}
The first element in the reversed hash_multiset is 30.

hash_multiset::crend

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Ters çevrilmiş bir hash_multiset son öğenin başarılı olduğu konumu ele alan bir sabit yineleyici döndürür.

const_reverse_iterator crend() const;

Dönüş Değeri

Ters çevrilmiş bir hash_multiset son öğeyi (ters hash_multisetçevrilmemiş öğedeki ilk öğeden önce gelen konum) başarılı olan konumu ele alan en büyük ters çift yönlü yineleyici.

Açıklamalar

crend, hash_multiset::endhash_multisetters çevrilmiş bir hash_multisetile kullanılır.

dönüş değeriyle crendhash_multiset nesne değiştirilemez.

crend bir ters yineleyicinin hash_multiset sonuna ulaşıp ulaşmadığını test etmek için kullanılabilir.

Örnek

// hash_multiset_crend.cpp
// compile with: /EHsc
#include <hash_multiset>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hs1;
   hash_multiset <int>::const_reverse_iterator hs1_crIter;

   hs1.insert( 10 );
   hs1.insert( 20 );
   hs1.insert( 30 );

   hs1_crIter = hs1.crend( );
   hs1_crIter--;
   cout << "The last element in the reversed hash_multiset is "
        << *hs1_crIter << "." << endl;
}
The last element in the reversed hash_multiset is 10.

hash_multiset::d ifference_type

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Aynı hash_multiset içindeki öğeleri adresleyen iki yineleyici arasındaki farkı sağlayan imzalı bir tamsayı türü.

typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::difference_type difference_type;

Açıklamalar

difference_type, kapsayıcının yineleyicileri çıkarılırken veya artırılırken döndürülen türdür. difference_type genellikle yineleyiciler first ile lastarasındaki [ first, last) aralığındaki öğe sayısını temsil etmek için first kullanılır; öğesinin işaret ettiği öğeyi ve öğesinin işaret lastettiği öğeyi dahil etmek için değil, öğesine kadar olan öğe aralığını içerir.

Küme gibi geri döndürülebilir kapsayıcılar tarafından desteklenen çift yönlü yineleyiciler sınıfını içeren bir giriş yineleyicisinin gereksinimlerini karşılayan tüm yineleyiciler için kullanılabilse difference_type de unutmayın. Yineleyiciler arasındaki çıkarma işlemi yalnızca vektör veya deque gibi rastgele erişim kapsayıcısı tarafından sağlanan rastgele erişim yineleyicileri tarafından desteklenir.

Örnek

// hash_multiset_diff_type.cpp
// compile with: /EHsc
#include <iostream>
#include <hash_set>
#include <algorithm>

int main( )
{
   using namespace std;
   using namespace stdext;

   hash_multiset <int> hms1;
   hash_multiset <int>::iterator hms1_Iter, hms1_bIter, hms1_eIter;

   hms1.insert( 20 );
   hms1.insert( 10 );

   // hash_multiset elements need not be unique
   hms1.insert( 20 );

   hms1_bIter = hms1.begin( );
   hms1_eIter = hms1.end( );

   hash_multiset <int>::difference_type   df_typ5, df_typ10,
        df_typ20;

   df_typ5 = count( hms1_bIter, hms1_eIter, 5 );
   df_typ10 = count( hms1_bIter, hms1_eIter, 10 );
   df_typ20 = count( hms1_bIter, hms1_eIter, 20 );

   // The keys & hence the elements of a hash_multiset
   // need not be unique and may occur multiple times
   cout << "The number '5' occurs " << df_typ5
        << " times in hash_multiset hms1.\n";
   cout << "The number '10' occurs " << df_typ10
        << " times in hash_multiset hms1.\n";
   cout << "The number '20' occurs " << df_typ20
        << " times in hash_multiset hms1.\n";

   // Count the number of elements in a hash_multiset
   hash_multiset <int>::difference_type  df_count = 0;
   hms1_Iter = hms1.begin( );
   while ( hms1_Iter != hms1_eIter)
   {
      df_count++;
      hms1_Iter++;
   }

   cout << "The number of elements in the hash_multiset hms1 is "
        << df_count << "." << endl;
}
The number '5' occurs 0 times in hash_multiset hms1.
The number '10' occurs 1 times in hash_multiset hms1.
The number '20' occurs 2 times in hash_multiset hms1.
The number of elements in the hash_multiset hms1 is 3.

hash_multiset::emplace

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Bir hash_multiset yerinde inşa edilmiş bir öğe ekler.

template <class ValTy>
iterator insert(ValTy&& val);

Parametreler

Val
Zaten bu öğeyi veya daha genel olarak anahtarı eşdeğer sıralanmış eklenecek öğenin değeri.

Dönüş Değeri

Üye işlevi, emplace yeni öğenin eklendiği konumu gösteren bir yineleyici döndürür.

Örnek

// hash_multiset_emplace.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
#include <string>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset<string> hms3;
   string str1("a");

   hms3.emplace(move(str1));
   cout << "After the emplace insertion, hms3 contains "
      << *hms3.begin() << "." << endl;
}
After the emplace insertion, hms3 contains a.

hash_multiset::emplace_hint

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Bir yerleştirme ipucuyla bir hash_multiset yerinde inşa edilmiş bir öğe ekler.

template <class ValTy>
iterator insert(
    const_iterator where,
    ValTy&& val);

Parametreler

Val
Zaten bu öğeyi veya daha genel olarak anahtarı eşdeğer sıralanmış eklenecek öğenin değeri.

nerede
Doğru ekleme noktasını aramaya başlanması gereken yer. (Ekleme noktası hemen ardından geliyorsa, ekleme işlemi logaritmik saat yerine amorti edilmiş sabit sürede gerçekleşebilir.)

Dönüş Değeri

hash_multiset::emplace üye işlevi, yeni öğenin içine eklendiği hash_multisetkonumu gösteren bir yineleyici döndürür.

Açıklamalar

Ekleme noktası hemen takip ederse, ekleme işlemi logaritmik saat yerine amorti edilmiş sabit sürede gerçekleşebilir.

Örnek

// hash_multiset_emplace_hint.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
#include <string>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset<string> hms1;
   string str1("a");

   hms1.insert(hms1.begin(), move(str1));
   cout << "After the emplace insertion, hms1 contains "
      << *hms1.begin() << "." << endl;
}
After the emplace insertion, hms1 contains a.

hash_multiset::empty

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

hash_multiset boş olup olmadığını sınar.

bool empty() const;

Dönüş Değeri

true hash_multiset boşsa; false hash_multiset yoksa.

Örnek

// hash_multiset_empty.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1, hms2;
   hms1.insert ( 1 );

   if ( hms1.empty( ) )
      cout << "The hash_multiset hms1 is empty." << endl;
   else
      cout << "The hash_multiset hms1 is not empty." << endl;

   if ( hms2.empty( ) )
      cout << "The hash_multiset hms2 is empty." << endl;
   else
      cout << "The hash_multiset hms2 is not empty." << endl;
}
The hash_multiset hms1 is not empty.
The hash_multiset hms2 is empty.

hash_multiset::end

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

bir hash_multiset son öğesinin başarılı olduğu konumu ele alan bir yineleyici döndürür.

const_iterator end() const;

iterator end();

Dönüş Değeri

Bir hash_multiset son öğesinin başarılı olduğu konumu ele alan çift yönlü yineleyici. hash_multiset boşsa hash_multiset::end == hash_multiset::begin.

Açıklamalar

end , yineleyicinin hash_multiset sonuna ulaşıp ulaşmadığını test etmek için kullanılır. tarafından end döndürülen değer başvurulmamalıdır.

Örnek

// hash_multiset_end.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1;
   hash_multiset <int> :: iterator hms1_Iter;
   hash_multiset <int> :: const_iterator hms1_cIter;

   hms1.insert( 1 );
   hms1.insert( 2 );
   hms1.insert( 3 );

   hms1_Iter = hms1.end( );
   hms1_Iter--;
   cout << "The last element of hms1 is " << *hms1_Iter << endl;

   hms1.erase( hms1_Iter );

   // The following 3 lines would err because the iterator is const
   // hms1_cIter = hms1.end( );
   // hms1_cIter--;
   // hms1.erase( hms1_cIter );

   hms1_cIter = hms1.end( );
   hms1_cIter--;
   cout << "The last element of hms1 is now " << *hms1_cIter << endl;
}
The last element of hms1 is 3
The last element of hms1 is now 2

hash_multiset::equal_range

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Hash_multiset belirtilen anahtardan büyük bir anahtara sahip ilk öğeye ve anahtara eşit veya daha büyük bir anahtara sahip hash_multiset ilk öğeye sırasıyla bir yineleyici çifti döndürür.

pair <const_iterator, const_iterator> equal_range (const Key& key) const;

pair <iterator, iterator> equal_range (const Key& key);

Parametreler

anahtar
Aranmakta olan hash_multiset bir öğenin sıralama anahtarıyla karşılaştırılacak bağımsız değişken anahtarı.

Dönüş Değeri

Birincisi anahtarın lower_bound, ikincisi anahtarın upper_bound olan bir çift yineleyici.

Üye işlevi tarafından döndürülen bir çiftin pr ilk yineleyicisine erişmek için kullanın pr. önce ve alt sınır yineleyicisini geri almak için *(pr kullanın. önce). Üye işlevi tarafından döndürülen bir çiftin pr ikinci yineleyicisine erişmek için kullanın pr. ikinci ve üst sınır yineleyicisini geri almak için *(pr kullanın. saniye).

Örnek

// hash_multiset_equal_range.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   typedef hash_multiset<int> IntHSet;
   IntHSet hms1;
   hash_multiset <int> :: const_iterator hms1_RcIter;

   hms1.insert( 10 );
   hms1.insert( 20 );
   hms1.insert( 30 );

   pair <IntHSet::const_iterator, IntHSet::const_iterator> p1, p2;
   p1 = hms1.equal_range( 20 );

   cout << "The upper bound of the element with "
        << "a key of 20\nin the hash_multiset hms1 is: "
        << *(p1.second) << "." << endl;

   cout << "The lower bound of the element with "
        << "a key of 20\nin the hash_multiset hms1 is: "
        << *(p1.first) << "." << endl;

   // Compare the upper_bound called directly
   hms1_RcIter = hms1.upper_bound( 20 );
   cout << "A direct call of upper_bound( 20 ) gives "
        << *hms1_RcIter << "," << endl
        << "matching the 2nd element of the pair"
        << " returned by equal_range( 20 )." << endl;

   p2 = hms1.equal_range( 40 );

   // If no match is found for the key,
   // both elements of the pair return end( )
   if ( ( p2.first == hms1.end( ) )
      && ( p2.second == hms1.end( ) ) )
      cout << "The hash_multiset hms1 doesn't have an element "
           << "with a key less than 40." << endl;
   else
      cout << "The element of hash_multiset hms1"
           << "with a key >= 40 is: "
           << *(p1.first) << "." << endl;
}
The upper bound of the element with a key of 20
in the hash_multiset hms1 is: 30.
The lower bound of the element with a key of 20
in the hash_multiset hms1 is: 20.
A direct call of upper_bound( 20 ) gives 30,
matching the 2nd element of the pair returned by equal_range( 20 ).
The hash_multiset hms1 doesn't have an element with a key less than 40.

hash_multiset::erase

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Bir hash_multiset içindeki bir öğeyi veya öğe aralığını belirtilen konumlardan kaldırır veya belirtilen bir anahtarla eşleşen öğeleri kaldırır.

iterator erase(iterator where);

iterator erase(iterator first, iterator last);

size_type erase(const key_type& key);

Parametreler

nerede
hash_multiset kaldırılacak öğenin konumu.

birinci
hash_multiset kaldırılan ilk öğenin konumu.

son
hash_multiset kaldırılan son öğenin hemen ötesinde konum.

anahtar
hash_multiset kaldırılacak öğelerin anahtarı.

Dönüş Değeri

İlk iki üye işlevi için, kaldırılan öğelerin ötesinde kalan ilk öğeyi belirten çift yönlü bir yineleyici veya böyle bir öğe yoksa hash_multiset sonuna yönelik bir işaretçi. Üçüncü üye işlevi için, hash_multiset kaldırılan öğelerin sayısı.

Açıklamalar

Üye işlevleri hiçbir zaman özel durum oluşturmaz.

Örnek

Aşağıdaki örnekte hash_multiset::erase üye işlevinin kullanımı gösterilmektedir.

// hash_multiset_erase.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main()
{
    using namespace std;
    using namespace stdext;
    hash_multiset<int> hms1, hms2, hms3;
    hash_multiset<int> :: iterator pIter, Iter1, Iter2;
    int i;
    hash_multiset<int>::size_type n;

    for (i = 1; i < 5; i++)
    {
        hms1.insert(i);
        hms2.insert(i * i);
        hms3.insert(i - 1);
    }

    // The 1st member function removes an element at a given position
    Iter1 = ++hms1.begin();
    hms1.erase(Iter1);

    cout << "After the 2nd element is deleted,\n"
         << "the hash_multiset hms1 is:" ;
    for (pIter = hms1.begin(); pIter != hms1.end(); pIter++)
        cout << " " << *pIter;
    cout << "." << endl;

    // The 2nd member function removes elements
    // in the range [ first,  last)
    Iter1 = ++hms2.begin();
    Iter2 = --hms2.end();
    hms2.erase(Iter1, Iter2);

    cout << "After the middle two elements are deleted,\n"
         << "the hash_multiset hms2 is:" ;
    for (pIter = hms2.begin(); pIter != hms2.end(); pIter++)
        cout << " " << *pIter;
    cout << "." << endl;

    // The 3rd member function removes elements with a given  key
    n = hms3.erase(2);

    cout << "After the element with a key of 2 is deleted,\n"
         << "the hash_multiset hms3 is:" ;
    for (pIter = hms3.begin(); pIter != hms3.end(); pIter++)
        cout << " " << *pIter;
    cout << "." << endl;

    // The 3rd member function returns the number of elements removed
    cout << "The number of elements removed from hms3 is: "
         << n << "." << endl;

    // The dereferenced iterator can also be used to specify a key
    Iter1 = ++hms3.begin();
    hms3.erase(Iter1);

    cout << "After another element with a key "
         << "equal to that of the 2nd element\n"
         << "is deleted, the hash_multiset hms3 is:" ;
    for (pIter = hms3.begin(); pIter != hms3.end(); pIter++)
        cout << " " << *pIter;
    cout << "." << endl;
}
After the 2nd element is deleted,
the hash_multiset hms1 is: 1 3 4.
After the middle two elements are deleted,
the hash_multiset hms2 is: 16 4.
After the element with a key of 2 is deleted,
the hash_multiset hms3 is: 0 1 3.
The number of elements removed from hms3 is: 1.
After another element with a key equal to that of the 2nd element
is deleted, the hash_multiset hms3 is: 0 3.

hash_multiset::find

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Hash_multiset belirtilen anahtara eşdeğer bir anahtara sahip bir öğenin konumunu adresleyen bir yineleyici döndürür.

iterator find(const Key& key);

const_iterator find(const Key& key) const;

Parametreler

anahtar
Aranmakta olan hash_multiset bir öğenin sıralama anahtarıyla eşleştirilecek bağımsız değişken anahtarı.

Dönüş Değeri

Belirtilen anahtara eşdeğer bir öğenin konumunu veya anahtar için eşleşme bulunamazsa hash_multiset son öğenin başarılı olduğu konumu ele alan bir yineleyici veya const_iterator.

Açıklamalar

Üye işlevi, hash_multiset sıralama anahtarı equivalent , karşılaştırılabilirlik ilişkisine göre bir sıralamaya neden olan ikili koşul altındaki bağımsız değişken anahtarına yönelik bir öğeyi ele alan bir yineleyici döndürür.

değerinin dönüş değeri find bir const_iteratoröğesine atanmışsa, hash_multiset nesnesi değiştirilemez. değerinin dönüş değeri find bir iteratoröğesine atanmışsa, hash_multiset nesnesi değiştirilebilir.

Örnek

// hash_multiset_find.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1;
   hash_multiset <int> :: const_iterator hms1_AcIter, hms1_RcIter;

   hms1.insert( 10 );
   hms1.insert( 20 );
   hms1.insert( 30 );

   hms1_RcIter = hms1.find( 20 );
   cout << "The element of hash_multiset hms1 with a key of 20 is: "
        << *hms1_RcIter << "." << endl;

   hms1_RcIter = hms1.find( 40 );

   // If no match is found for the key, end( ) is returned
   if ( hms1_RcIter == hms1.end( ) )
      cout << "The hash_multiset hms1 doesn't have an element "
           << "with a key of 40." << endl;
   else
      cout << "The element of hash_multiset hms1 with a key of 40 is: "
           << *hms1_RcIter << "." << endl;

   // The element at a specific location in the hash_multiset can be found
   // by using a dereferenced iterator addressing the location
   hms1_AcIter = hms1.end( );
   hms1_AcIter--;
   hms1_RcIter = hms1.find( *hms1_AcIter );
   cout << "The element of hms1 with a key matching "
        << "that of the last element is: "
        << *hms1_RcIter << "." << endl;
}
The element of hash_multiset hms1 with a key of 20 is: 20.
The hash_multiset hms1 doesn't have an element with a key of 40.
The element of hms1 with a key matching that of the last element is: 30.

hash_multiset::get_allocator

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

hash_multiset oluşturmak için kullanılan ayırıcı nesnesinin bir kopyasını döndürür.

Allocator get_allocator() const;

Dönüş Değeri

sınıfın şablon parametresi Allocatorolan belleği yönetmek için hash_multiset tarafından kullanılan ayırıcı.

hakkında Allocatordaha fazla bilgi için hash_multiset Sınıfı konusunun Açıklamalar bölümüne bakın.

Açıklamalar

hash_multiset sınıfı için ayırıcılar, sınıfın depolamayı nasıl yöneteceğini belirtir. C++ Standart Kitaplığı kapsayıcı sınıfları ile sağlanan varsayılan ayırıcılar çoğu programlama gereksinimi için yeterlidir. Kendi ayırıcı sınıfınızı yazmak ve kullanmak gelişmiş bir C++ konusudur.

Örnek

// hash_multiset_get_allocator.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;

   // The following lines declare objects
   // that use the default allocator.
   hash_multiset <int, hash_compare <int, less<int> > > hms1;
   hash_multiset <int, hash_compare <int, greater<int> > > hms2;
   hash_multiset <double, hash_compare <double,
      less<double> >, allocator<double> > hms3;

   hash_multiset <int, hash_compare <int,
      greater<int> > >::allocator_type hms2_Alloc;
   hash_multiset <double>::allocator_type hms3_Alloc;
   hms2_Alloc = hms2.get_allocator( );

   cout << "The number of integers that can be allocated"
        << endl << "before free memory is exhausted: "
        << hms1.max_size( ) << "." << endl;

   cout << "The number of doubles that can be allocated"
        << endl << "before free memory is exhausted: "
        << hms3.max_size( ) <<  "." << endl;

   // The following lines create a hash_multiset hms4
   // with the allocator of hash_multiset hms1.
   hash_multiset <int>::allocator_type hms4_Alloc;
   hash_multiset <int> hms4;
   hms4_Alloc = hms2.get_allocator( );

   // Two allocators are interchangeable if
   // storage allocated from each can be
   // deallocated by the other
   if( hms2_Alloc == hms4_Alloc )
   {
      cout << "The allocators are interchangeable."
           << endl;
   }
   else
   {
      cout << "The allocators are not interchangeable."
           << endl;
   }
}

hash_multiset::hash_multiset

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Boş olan veya başka hash_multisetbir öğesinin tümünün veya bir bölümünün kopyası olan bir hash_multiset oluşturur.

hash_multiset();

explicit hash_multiset(
    const Traits& Comp);

hash_multiset(
    const Traits& Comp,
    const Allocator& Al);

hash_multiset(
    const hash_multiset<Key, Traits, Allocator>& Right);

hash_multiset(
    hash_multiset&& Right
);
hash_multiset (initializer_list<Type> IList);

hash_multiset(
    initializer_list<Type> IList, const Compare& Comp):
hash_multiset(
    initializer_list<Type> IList, const Compare& Comp, const Allocator& Al);

template <class InputIterator>
hash_multiset(
    InputIterator first,
    InputIterator last);

template <class InputIterator>
hash_multiset(
    InputIterator first,
    InputIterator last,
    const Traits& Comp);

template <class InputIterator>
hash_multiset(
    InputIterator first,
    InputIterator last,
    const Traits& Comp,
    const Allocator& Al);

Parametreler

Al
Bu hash_multiset nesne için kullanılacak depolama ayırıcı sınıfı, varsayılan olarak Allocatorolarak kullanılır.

Comp
türündeki const Traits öğeleri hash_multisetsıralamak için kullanılan karşılaştırma işlevidir ve varsayılan olarak hash_compareolarak kullanılır.

Sağ
hash_multiset Bunun için bir hash_multiset kopya oluşturulur.

birinci
Kopyalanacak öğe aralığındaki ilk öğenin konumu.

son
Kopyalanacak öğe aralığının ötesindeki ilk öğenin konumu.

IList
Kopyalanacak öğeleri içeren initializer_list.

Açıklamalar

Tüm oluşturucular için bellek depolamasını hash_multiset yöneten ve daha sonra hash_multiset::get_allocator çağrılarak döndürülebilen bir ayırıcı nesnesi türünü depolar. Ayırıcı parametresi genellikle sınıf bildirimlerinde ve alternatif ayırıcıları değiştirmek için kullanılan önişlem makrolarında atlanır.

Tüm oluşturucular kendi hash_multisets başlatır.

Tüm oluşturucular, anahtarları Traits arasında bir sıra oluşturmak için kullanılan ve daha sonra hash_multiset::key_comphash_multisetdöndürülebilecek türde bir işlev nesnesi depolar. Hakkında daha fazla bilgi Traits için hash_multiset Sınıfı konusuna bakın.

İlk üç oluşturucu, öğelerin sırasını belirlerken kullanılacak karşılaştırma işlevinin türünü (Comphash_multisetAl) açıkça belirten boş bir ilk , ikincisini belirtir. anahtar sözcüğü explicit belirli türdeki otomatik tür dönüştürmelerini gizler.

Dördüncü oluşturucu, öğesini hash_multisetRighttaşır.

Beşinci, altıncı ve yedinci oluşturucular bir initializer_list kullanır.

Son üç oluşturucu, Compare ve ayırıcı sınıfının karşılaştırma işlevinin türünü belirtirken açıklığı artan bir first şekilde [ last, hash_multiset) aralığını kopyalar.

Karma küme kapsayıcısında öğelerin gerçek sırası karma işlevine, sıralama işlevine ve karma tablonun geçerli boyutuna bağlıdır ve genel olarak küme kapsayıcısında olduğu gibi tahmin edilemez ve burada tek başına sıralama işlevi tarafından belirlenir.

hash_multiset::insert

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

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

iterator insert(
    const Type& value);

iterator insert(
    iterator where,
    const Type& Al);

void insert(
    initializer_list<Type> IList);

iterator insert(
    const Type& value);

iterator insert(
    Iterator where,
    const Type& value);

template <class InputIterator>
void insert(
    InputIterator first,
    InputIterator last);

template <class ValTy>
iterator insert(
    ValTy&& value);

template <class ValTy>
iterator insert(
    const_iterator where,
    ValTy&& value);

Parametreler

değer
hash_multiset zaten bu öğeyi veya daha genel olarak anahtarı eşdeğer olarak sıralanmış bir öğeyi içermediği sürece hash_multiset eklenecek öğenin değeri.

nerede
Doğru ekleme noktasını aramaya başlanması gereken yer. (Ekleme noktası hemen ardından geliyorsa, ekleme işlemi logaritmik saat yerine amorti edilmiş sabit sürede gerçekleşebilir.)

birinci
bir hash_multiset kopyalanacak ilk öğenin konumu.

son
Bir hash_multiset kopyalanacak son öğenin hemen ötesindeki konum.

IList
Kopyalanacak öğeleri içeren initializer_list.

Dönüş Değeri

İlk iki ekleme üyesi işlevi, yeni öğenin eklendiği konuma işaret eden bir yineleyici döndürür.

Sonraki üç üye işlevi bir initializer_list kullanır.

Üçüncü üye işlevi, belirtilen bir hash_multiset [ first, last) aralığındaki yineleyicisi tarafından adreslenen her öğeye karşılık gelen bir hash_multiset öğe değerlerinin sırasını ekler.

Açıklamalar

Ekleme noktası hemen takip ederse, ekleme ipucu sürümü için logaritmik saat yerine amorti edilmiş sabit süre içinde gerçekleşebilir.

hash_multiset::yineleyici

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

bir hash_multiset herhangi bir öğeyi okuyabilen veya değiştirebilen çift yönlü bir yineleyici sağlayan tür.

typedef list<typename Traits::value_type, typename Traits::allocator_type>::iterator iterator;

Açıklamalar

Bir öğenin değerini değiştirmek için bir tür iterator kullanılabilir.

Örnek

bildirme ve kullanma örneği için iterator örneğine bakın.

hash_multiset::key_comp

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Hash_multiset anahtarları sıralamak için kullanılan karşılaştırma nesnesinin bir kopyasını alır.

key_compare key_comp() const;

Dönüş Değeri

Kapsayıcının öğelerini karma olarak ve sıralamak için kullanılan işlev nesnelerini içeren hash_multiset şablon parametresiNi Traits döndürür.

Özellikler hakkında daha fazla bilgi için hash_multiset Sınıfı konusuna bakın.

Açıklamalar

Depolanan nesne bir üye işlevi tanımlar:

bool operator<(const Key& _xVal, const Key& _yVal);

true _xVal döndürür ve sıralama düzeninde buna eşit _yVal değildir.

Hem key_compare hem de value_compare, Şablon parametresiNin Traits eş anlamlıları olduğunu unutmayın. Her iki tür de hash_multiset ve hash_multiset sınıfları için sağlanır ve burada aynılardır, hash_map ve hash_multimap sınıfları ile uyumluluk için ayrıdırlar.

Örnek

// hash_multiset_key_comp.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;

   hash_multiset <int, hash_compare < int, less<int> > >hms1;
   hash_multiset<int, hash_compare < int, less<int> > >::key_compare kc1
          = hms1.key_comp( ) ;
   bool result1 = kc1( 2, 3 ) ;
   if( result1 == true )
   {
      cout << "kc1( 2,3 ) returns value of true, "
           << "where kc1 is the function object of hms1."
           << endl;
   }
   else
   {
      cout << "kc1( 2,3 ) returns value of false "
           << "where kc1 is the function object of hms1."
        << endl;
   }

   hash_multiset <int, hash_compare < int, greater<int> > > hms2;
   hash_multiset<int, hash_compare < int, greater<int> > >::key_compare
         kc2 = hms2.key_comp( ) ;
   bool result2 = kc2( 2, 3 ) ;
   if( result2 == true )
   {
      cout << "kc2( 2,3 ) returns value of true, "
           << "where kc2 is the function object of hms2."
           << endl;
   }
   else
   {
      cout << "kc2( 2,3 ) returns value of false, "
           << "where kc2 is the function object of hms2."
           << endl;
   }
}

hash_multiset::key_compare

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

İki işlev nesnesi sağlayan bir tür, bir hash_multiset iki öğe değerini karşılaştırarak göreli sırasını ve öğeleri karma hale getiren bir birli koşulu karşılaştırabilen bir sınıf karşılaştırması ikili koşulu.

typedef Traits key_compare;

Açıklamalar

key_compare , Traits şablon parametresinin eş anlamlısıdır.

Özellikler hakkında daha fazla bilgi için hash_multiset Sınıfı konusuna bakın.

Hem hem de key_compare value_compare,Traits şablon parametresinin eş anlamlıları olduğunu unutmayın. Her iki tür de hash_set ve hash_multiset sınıfları için sağlanır ve burada aynı olan sınıflar, hash_map ve hash_multimap sınıfları ile uyumluluk açısından ayrıdır.

Örnek

bildirme ve kullanma örneği için key_compare örneğine bakın.

hash_multiset::key_type

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

hash_multiset iki öğesinin göreli sırasını belirlemek için sıralama anahtarlarını karşılaştırabilen bir işlev nesnesi sağlayan tür.

typedef Key key_type;

Açıklamalar

key_type, Anahtar şablon parametresinin eş anlamlısıdır.

Hem hem de key_type value_type, anahtar şablon parametresinin eş anlamlıları olduğunu unutmayın. Her iki tür de aynı olan küme ve çok kümeli sınıflar için, eşleme ve çoklu eşleme sınıfları ile uyumluluk için sağlanır ve burada ayrıdırlar.

Anahtar hakkında daha fazla bilgi için hash_multiset Sınıfı konusunun Açıklamalar bölümüne bakın.

Örnek

bildirme ve kullanma örneği için key_type örneğine bakın.

hash_multiset::lower_bound

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Belirtilen anahtara eşit veya bundan büyük bir anahtara sahip bir hash_multiset ilk öğesine yineleyici döndürür.

const_iterator lower_bound(const Key& key) const;

iterator lower_bound(const Key& key);

Parametreler

anahtar
Aranmakta olan hash_multiset bir öğenin sıralama anahtarıyla karşılaştırılacak bağımsız değişken anahtarı.

Dönüş Değeri

Hash_multiset ilk öğesinin konumunu bağımsız değişken anahtarına eşit veya ondan büyük bir anahtarla ele alan veya anahtar için eşleşme bulunamazsa hash_multiset son öğeyi tamamlayan konumu ele alan bir yineleyiciveya const_iterator.

Örnek

// hash_multiset_lower_bound.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main() {
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1;
   hash_multiset <int> :: const_iterator hms1_AcIter, hms1_RcIter;

   hms1.insert( 10 );
   hms1.insert( 20 );
   hms1.insert( 30 );

   hms1_RcIter = hms1.lower_bound( 20 );
   cout << "The element of hash_multiset hms1 with a key of 20 is: "
        << *hms1_RcIter << "." << endl;

   hms1_RcIter = hms1.lower_bound( 40 );

   // If no match is found for the key, end( ) is returned
   if ( hms1_RcIter == hms1.end( ) )
      cout << "The hash_multiset hms1 doesn't have an element "
           << "with a key of 40." << endl;
   else
      cout << "The element of hash_multiset hms1 with a key of 40 is: "
           << *hms1_RcIter << "." << endl;

   // An element at a specific location in the hash_multiset can be found
   // by using a dereferenced iterator that addresses the location
   hms1_AcIter = hms1.end( );
   hms1_AcIter--;
   hms1_RcIter = hms1.lower_bound( *hms1_AcIter );
   cout << "The element of hms1 with a key matching "
        << "that of the last element is: "
        << *hms1_RcIter << "." << endl;
}

hash_multiset::max_size

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

hash_multiset uzunluğu üst sınırını döndürür.

size_type max_size() const;

Dönüş Değeri

hash_multiset maksimum olası uzunluğu.

Örnek

// hash_multiset_max_size.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1;
   hash_multiset <int>::size_type i;

   i = hms1.max_size( );
   cout << "The maximum possible length "
        << "of the hash_multiset is " << i << "." << endl;
}

hash_multiset::operator=

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

hash_multiset öğelerini başka bir hash_multiset kopyasıyla değiştirir.

hash_multiset& operator=(const hash_multiset& right);

hash_multiset& operator=(hash_multiset&& right);

Parametreler

Sağ
içine .

Açıklamalar

içindeki hash_multisetoperator= mevcut öğeleri sildikten sonra içeriğini kopyalayarak veya doğrudan içine hash_multisettaşır.

Örnek

// hash_multiset_operator_as.cpp
// compile with: /EHsc
#include <hash_multiset>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset<int> v1, v2, v3;
   hash_multiset<int>::iterator iter;

   v1.insert(10);

   cout << "v1 = " ;
   for (iter = v1.begin(); iter != v1.end(); iter++)
      cout << iter << " ";
   cout << endl;

   v2 = v1;
   cout << "v2 = ";
   for (iter = v2.begin(); iter != v2.end(); iter++)
      cout << iter << " ";
   cout << endl;

// move v1 into v2
   v2.clear();
   v2 = move(v1);
   cout << "v2 = ";
   for (iter = v2.begin(); iter != v2.end(); iter++)
      cout << iter << " ";
   cout << endl;
}

hash_multiset::p ointer

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

hash_multiset bir öğeye işaretçi sağlayan tür.

typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::pointer pointer;

Açıklamalar

Bir öğenin değerini değiştirmek için bir tür pointer kullanılabilir.

Çoğu durumda, çok kümeli bir nesnedeki öğelere erişmek için yineleyici kullanılmalıdır.

hash_multiset::rbegin

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Ters çevrilmiş bir hash_multiset ilk öğeyi ele alan bir yineleyici döndürür.

const_reverse_iterator rbegin() const;

reverse_iterator rbegin();

Dönüş Değeri

Ters çevrilmiş bir hash_multiset ilk öğeyi ele alan veya ters çevrilmeyen hash_multiset son öğe olan öğeyi ele alan ters çift yönlü yineleyici.

Açıklamalar

rbegin, bir hash_multiset ile kullanıldığında olduğu gibi ters çevrilmiş bir hash_multiset ile kullanılır.

değerinin dönüş değeri rbegin öğesine const_reverse_iteratoratanmışsa, hash_multiset nesnesi değiştirilemez. değerinin dönüş değeri rbegin bir reverse_iteratoröğesine atanmışsa, hash_multiset nesnesi değiştirilebilir.

rbegin bir hash_multiset geriye doğru yinelemek için kullanılabilir.

Örnek

// hash_multiset_rbegin.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1;
   hash_multiset <int>::iterator hms1_Iter;
   hash_multiset <int>::reverse_iterator hms1_rIter;

   hms1.insert( 10 );
   hms1.insert( 20 );
   hms1.insert( 30 );

   hms1_rIter = hms1.rbegin( );
   cout << "The first element in the reversed hash_multiset is "
        << *hms1_rIter << "." << endl;

   // begin can be used to start an iteration
   // through a hash_multiset in a forward order
   cout << "The hash_multiset is: ";
   for ( hms1_Iter = hms1.begin( ) ; hms1_Iter != hms1.end( );
         hms1_Iter++ )
      cout << *hms1_Iter << " ";
   cout << endl;

   // rbegin can be used to start an iteration
   // through a hash_multiset in a reverse order
   cout << "The reversed hash_multiset is: ";
   for ( hms1_rIter = hms1.rbegin( ) ; hms1_rIter != hms1.rend( );
         hms1_rIter++ )
      cout << *hms1_rIter << " ";
   cout << endl;

   // A hash_multiset element can be erased by dereferencing to its key
   hms1_rIter = hms1.rbegin( );
   hms1.erase ( *hms1_rIter );

   hms1_rIter = hms1.rbegin( );
   cout << "After the erasure, the first element "
        << "in the reversed hash_multiset is "<< *hms1_rIter << "."
        << endl;
}
The first element in the reversed hash_multiset is 30.
The hash_multiset is: 10 20 30
The reversed hash_multiset is: 30 20 10
After the erasure, the first element in the reversed hash_multiset is 20.

hash_multiset::reference

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

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

typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::reference reference;

Örnek

// hash_multiset_reference.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1;

   hms1.insert( 10 );
   hms1.insert( 20 );

   // Declare and initialize a reference &Ref1 to the 1st element
   int &Ref1 = *hms1.begin( );

   cout << "The first element in the hash_multiset is "
        << Ref1 << "." << endl;

   // The value of the 1st element of the hash_multiset can be
   // changed by operating on its (non const) reference
   Ref1 = Ref1 + 5;

   cout << "The first element in the hash_multiset is now "
        << *hms1.begin() << "." << endl;
}
The first element in the hash_multiset is 10.
The first element in the hash_multiset is now 15.

hash_multiset::rend

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Ters çevrilmiş bir hash_multiset son öğenin başarılı olduğu konumu ele alan bir yineleyici döndürür.

const_reverse_iterator rend() const;

reverse_iterator rend();

Dönüş Değeri

Ters çevrilmiş bir hash_multiset son öğeden sonra gelen konumu (ters çevrilmeyen hash_multiset ilk öğeden önce gelen konum) ele alan ters çift yönlü yineleyici.

Açıklamalar

rendaynı ucun hash_multiset kullanıldığı gibi ters çevrilmiş hash_multiset kullanılır.

değerinin dönüş değeri rend öğesine const_reverse_iteratoratanmışsa, hash_multiset nesnesi değiştirilemez. değerinin dönüş değeri rend bir reverse_iteratoröğesine atanmışsa, hash_multiset nesnesi değiştirilebilir. tarafından rend döndürülen değer başvurulmamalıdır.

rend bir ters yineleyicinin hash_multiset sonuna ulaşıp ulaşmadığını test etmek için kullanılabilir.

Örnek

// hash_multiset_rend.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1;
   hash_multiset <int>::iterator hms1_Iter;
   hash_multiset <int>::reverse_iterator hms1_rIter;
   hash_multiset <int>::const_reverse_iterator hms1_crIter;

   hms1.insert( 10 );
   hms1.insert( 20 );
   hms1.insert( 30 );

   hms1_rIter = hms1.rend( );
   hms1_rIter--;
   cout << "The last element in the reversed hash_multiset is "
        << *hms1_rIter << "." << endl;

   // end can be used to terminate an iteration
   // through a hash_multiset in a forward order
   cout << "The hash_multiset is: ";
   for ( hms1_Iter = hms1.begin( ) ; hms1_Iter != hms1.end( );
         hms1_Iter++ )
      cout << *hms1_Iter << " ";
   cout << "." << endl;

   // rend can be used to terminate an iteration
   // through a hash_multiset in a reverse order
   cout << "The reversed hash_multiset is: ";
   for ( hms1_rIter = hms1.rbegin( ) ; hms1_rIter != hms1.rend( );
         hms1_rIter++ )
      cout << *hms1_rIter << " ";
   cout << "." << endl;

   hms1_rIter = hms1.rend( );
   hms1_rIter--;
   hms1.erase ( *hms1_rIter );

   hms1_rIter = hms1.rend( );
   hms1_rIter--;
   cout << "After the erasure, the last element in the "
        << "reversed hash_multiset is " << *hms1_rIter << "."
        << endl;
}
The last element in the reversed hash_multiset is 10.
The hash_multiset is: 10 20 30 .
The reversed hash_multiset is: 30 20 10 .
After the erasure, the last element in the reversed hash_multiset is 20.

hash_multiset::reverse_iterator

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Ters çevrilmiş bir hash_multiset bir öğeyi okuyabilen veya değiştirebilen çift yönlü bir yineleyici sağlayan tür.

typedef list<typename Traits::value_type, typename Traits::allocator_type>::reverse_iterator reverse_iterator;

Açıklamalar

Tür reverse_iterator , hash_multiset tersten yinelemek için kullanılır.

Örnek

örneği.

hash_multiset::size

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

hash_multiset öğe sayısını döndürür.

size_type size() const;

Dönüş Değeri

hash_multiset geçerli uzunluğu.

Örnek

// hash_multiset_size.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1;
   hash_multiset <int> :: size_type i;

   hms1.insert( 1 );
   i = hms1.size( );
   cout << "The hash_multiset length is " << i << "." << endl;

   hms1.insert( 2 );
   i = hms1.size( );
   cout << "The hash_multiset length is now " << i << "." << endl;
}
The hash_multiset length is 1.
The hash_multiset length is now 2.

hash_multiset::size_type

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

bir hash_multiset öğe sayısını temsil eden işaretsiz bir tamsayı türü.

typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::size_type size_type;

Örnek

Nasıl bildirilip kullanılacağına ilişkin bir örnek için bkz. boyut örneğisize_type

hash_multiset::swap

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

İki hash_multisets öğelerini değiştirir.

void swap(hash_multiset& right);

Parametreler

Sağ
Bağımsız değişkeni, hedef hash_multiset ile değiştirilecek öğeleri sağlayan hash_multiset.

Açıklamalar

Üye işlevi, öğeleri değiş tokuş edilen iki hash_multisets öğeleri belirten hiçbir başvuruyu, işaretçiyi veya yineleyiciyi geçersiz kılmaz.

Örnek

// hash_multiset_swap.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1, hms2, hms3;
   hash_multiset <int>::iterator hms1_Iter;

   hms1.insert( 10 );
   hms1.insert( 20 );
   hms1.insert( 30 );
   hms2.insert( 100 );
   hms2.insert( 200 );
   hms3.insert( 300 );

   cout << "The original hash_multiset hms1 is:";
   for ( hms1_Iter = hms1.begin( ); hms1_Iter != hms1.end( );
         hms1_Iter++ )
         cout << " " << *hms1_Iter;
   cout   << "." << endl;

   // This is the member function version of swap
   hms1.swap( hms2 );

   cout << "After swapping with hms2, list hms1 is:";
   for ( hms1_Iter = hms1.begin( ); hms1_Iter != hms1.end( );
         hms1_Iter++ )
         cout << " " << *hms1_Iter;
   cout  << "." << endl;

   // This is the specialized template version of swap
   swap( hms1, hms3 );

   cout << "After swapping with hms3, list hms1 is:";
   for ( hms1_Iter = hms1.begin( ); hms1_Iter != hms1.end( );
         hms1_Iter++ )
         cout << " " << *hms1_Iter;
   cout   << "." << endl;
}
The original hash_multiset hms1 is: 10 20 30.
After swapping with hms2, list hms1 is: 200 100.
After swapping with hms3, list hms1 is: 300.

hash_multiset::upper_bound

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Bir hash_multiset belirtilen anahtardan büyük bir anahtarla ilk öğeye bir yineleyici döndürür.

const_iterator upper_bound(const Key& key) const;

iterator upper_bound(const Key& key);

Parametreler

anahtar
Aranmakta olan hash_multiset bir öğenin sıralama anahtarıyla karşılaştırılacak bağımsız değişken anahtarı.

Dönüş Değeri

Bir hash_multiset ilk öğenin konumunu bağımsız değişken anahtarından büyük bir anahtarla veya anahtar için eşleşme bulunamazsa hash_multiset son öğeyi tamamlayan konumu ele alan bir yineleyiciveya const_iterator.

Örnek

// hash_multiset_upper_bound.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1;
   hash_multiset <int> :: const_iterator hms1_AcIter, hms1_RcIter;

   hms1.insert( 10 );
   hms1.insert( 20 );
   hms1.insert( 30 );

   hms1_RcIter = hms1.upper_bound( 20 );
   cout << "The first element of hash_multiset hms1" << endl
        << "with a key greater than 20 is: "
        << *hms1_RcIter << "." << endl;

   hms1_RcIter = hms1.upper_bound( 30 );

   // If no match is found for the key, end( ) is returned
   if ( hms1_RcIter == hms1.end( ) )
      cout << "The hash_multiset hms1 doesn't have an element\n"
           << "with a key greater than 30." << endl;
   else
      cout << "The element of hash_multiset hms1"
           << "with a key > 40 is: "
           << *hms1_RcIter << "." << endl;

   // An element at a specific location in the hash_multiset can be
   // found by using a dereferenced iterator addressing the location
   hms1_AcIter = hms1.begin( );
   hms1_RcIter = hms1.upper_bound( *hms1_AcIter );
   cout << "The first element of hms1 with a key greater than "
        << endl << "that of the initial element of hms1 is: "
        << *hms1_RcIter << "." << endl;
}
The first element of hash_multiset hms1
with a key greater than 20 is: 30.
The hash_multiset hms1 doesn't have an element
with a key greater than 30.
The first element of hms1 with a key greater than
that of the initial element of hms1 is: 20.

hash_multiset::value_comp

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Bir hash_multiset öğe değerlerini sıralamak için kullanılan karşılaştırma nesnesinin bir kopyasını alır.

value_compare value_comp() const;

Dönüş Değeri

Kapsayıcının öğelerini karma olarak ve sıralamak için kullanılan işlev nesnelerini içeren hash_multiset şablon parametresiNi Traits döndürür.

Özellikler hakkında daha fazla bilgi için hash_multiset Sınıfı konusuna bakın.

Açıklamalar

Depolanan nesne bir üye işlevi tanımlar:

bool işleci( constKey&, _xVal);

true _xVal döndürür ve sıralama düzeninde buna eşit _yVal değildir.

Hem key_compare hem de value_compare, Şablon parametresiNin Traits eş anlamlıları olduğunu unutmayın. Her iki tür de hash_multiset ve hash_multiset sınıfları için sağlanır ve burada aynılardır, hash_map ve hash_multimap sınıfları ile uyumluluk için ayrıdırlar.

Örnek

// hash_multiset_value_comp.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;

   hash_multiset <int, hash_compare < int, less<int> > > hms1;
   hash_multiset <int, hash_compare < int, less<int> > >::value_compare
      vc1 = hms1.value_comp( );
   bool result1 = vc1( 2, 3 );
   if( result1 == true )
   {
      cout << "vc1( 2,3 ) returns value of true, "
           << "where vc1 is the function object of hms1."
           << endl;
   }
   else
   {
      cout << "vc1( 2,3 ) returns value of false, "
           << "where vc1 is the function object of hms1."
           << endl;
   }

   hash_multiset <int, hash_compare < int, greater<int> > > hms2;
   hash_multiset<int, hash_compare < int, greater<int> > >::
           value_compare vc2 = hms2.value_comp( );
   bool result2 = vc2( 2, 3 );
   if( result2 == true )
   {
      cout << "vc2( 2,3 ) returns value of true, "
           << "where vc2 is the function object of hms2."
           << endl;
   }
   else
   {
      cout << "vc2( 2,3 ) returns value of false, "
           << "where vc2 is the function object of hms2."
           << endl;
   }
}
vc1( 2,3 ) returns value of true, where vc1 is the function object of hms1.
vc2( 2,3 ) returns value of false, where vc2 is the function object of hms2.

hash_multiset::value_compare

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

İki işlev nesnesi sağlayan bir tür, bir hash_multiset iki öğe değerini karşılaştırarak göreli sırasını ve öğeleri karma hale getiren bir birli koşulu karşılaştırabilen bir sınıf karşılaştırması ikili koşulu.

typedef key_compare value_compare;

Açıklamalar

value_compare , Traits şablon parametresinin eş anlamlısıdır.

Özellikler hakkında daha fazla bilgi için hash_multiset Sınıfı konusuna bakın.

Hem key_compareşablon parametresiNin value_compare olduğunu unutmayın. Her iki tür de sınıf kümesi ve aynı oldukları çoklu küme için, sınıf eşlemesi ve çoklu eşleme ile uyumluluk için sağlanır ve burada ayrıdırlar.

Örnek

bildirme ve kullanma örneği için value_compare örneğine bakın.

hash_multiset::value_type

Not

Bu, API artık kullanılmıyor. Alternatif olarak sınıf unordered_multiset.

Bir öğe olarak depolanan bir nesneyi kapasitesinde bir değer olarak hash_multiset olarak tanımlayan tür.

typedef Key value_type;

Örnek

// hash_multiset_value_type.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int> hms1;
   hash_multiset <int>::iterator hms1_Iter;

   // Declare value_type
   hash_multiset <int> :: value_type hmsvt_Int;

   hmsvt_Int = 10;   // Initialize value_type

   // Declare key_type
   hash_multiset <int> :: key_type hmskt_Int;
   hmskt_Int = 20;             // Initialize key_type

   hms1.insert( hmsvt_Int );         // Insert value into s1
   hms1.insert( hmskt_Int );         // Insert key into s1

   // A hash_multiset accepts key_types or value_types as elements
   cout << "The hash_multiset has elements:";
   for ( hms1_Iter = hms1.begin() ; hms1_Iter != hms1.end( );
         hms1_Iter++)
      cout << " " << *hms1_Iter;
      cout << "." << endl;
}
The hash_multiset has elements: 10 20.

Ayrıca bkz.

C++ Standart Kitaplığında İş Parçacığı Güvenliği
C++ Standart Kitaplığı Başvurusu