Partager via


hash_multiset::hash_multiset

[!REMARQUE]

Cette API est obsolète.l'alternative est unordered_multiset Class.

Construit hash_multiset qui est vide ou qui est une copie de l'ensemble ou une partie d'un autre hash_multiset.

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
);
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
   );
hash_multiset(
   hash_multiset&& _Right
};

Paramètres

Paramètre

Description

_Al

La classe de l'allocateur de mémoire à utiliser pour cet objet d' hash_multiset , qui correspond par défaut à Allocator.

_Comp

La fonction de comparaison du type const Traits utilisée pour trier les éléments dans hash_multiset, qui correspond par défaut à hash_compare.

_Right

hash_multiset dont hash_multiset construit doit être une copie.

_First

Position du premier élément de la plage d'éléments à copier.

_Last

Position du premier élément au delà de la plage d'éléments à copier.

Notes

Tous les constructeurs enregistre un type d'objet d'allocation qui gère la mémoire de mémoire pour hash_multiset et qui peut ensuite être retourné en appelant hash_multiset::get_allocator.Le paramètre de l'allocateur est souvent omis dans les déclarations de classe et les macros de prétraitement utilisées pour substituer d'autres allocateurs.

Tous les constructeurs initialisent leurs hash_multisets.

Tous les constructeurs enregistre un objet de fonction de type Traits utilisé pour générer une commande entre les clés d' hash_multiset et qui peut ensuite être retourné en appelant hash_multiset::key_comp.Pour plus d'informations sur Traits consultez la rubrique de hash_multiset Class .

Les trois premiers constructeurs spécifient hash_multisetinitial vide, le deuxième spécifiant le type de fonction de comparaison (_Comp) à utiliser lorsque vous établissez l'ordre des éléments et du tiers spécifiant explicitement le type de l'allocateur (_Al) à utiliser.Le mot clé explicit supprimer certains genres de conversion de type automatique.

Le quatrième constructeur spécifie une copie d' hash_multiset_Right.

Les trois suivants constructeurs copiez la plage [_First,_Last) d' hash_multiset avec l'augmentation de l'explicité en spécifiant le type de fonction de comparaison de classe comparent et allocateur.

Le dernier constructeur déplace hash_multiset_Right.

La commande réelle d'éléments dans un conteneur défini haché dépend de la fonction de hachage, de la fonction classante et la taille actuelle de la table de hachage et ne peut pas, comme prévu en général comme elle peut avec le conteneur de positionnement, où il a été déterminée par seule la fonction classante.

Exemple

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

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_multiset <int>::iterator hms1_Iter, hms3_Iter, hms4_Iter,
      hms5_Iter, hms6_Iter, hms7_Iter;
   hash_multiset <int, hash_compare <int, greater<int> > >::iterator
      hms2_Iter;

   // Create an empty hash_multiset hs0 of key type integer
   hash_multiset <int> hs0;

   // Create an empty hash_multiset hms1 with the key comparison
   // function of less than, then insert 4 elements
   hash_multiset <int, hash_compare <int, less<int> > > hms1;
   hms1.insert( 10 );
   hms1.insert( 20 );
   hms1.insert( 30 );
   hms1.insert( 40 );

   // Create an empty hash_multiset hms2 with the key comparison
   // function of geater than, then insert 2 elements
   hash_multiset <int, hash_compare <int, greater<int> > > hms2;
   hms2.insert( 10 );
   hms2.insert( 20 );

   // Create a hash_multiset hms3 with the 
   // allocator of hash_multiset hms1
   hash_multiset <int>::allocator_type hms1_Alloc;
   hms1_Alloc = hms1.get_allocator( );
   hash_multiset <int> hms3( hash_compare <int, less<int> >( ),
      hms1_Alloc );
   hms3.insert( 30 );

   // Create a copy, hash_multiset hms4, of hash_multiset hms1
   hash_multiset <int> hms4( hms1 );

   // Create a hash_multiset hms5 by copying the range hms1[_First, _Last)
   hash_multiset <int>::const_iterator hms1_bcIter, hms1_ecIter;
   hms1_bcIter = hms1.begin( );
   hms1_ecIter = hms1.begin( );
   hms1_ecIter++;
   hms1_ecIter++;
   hash_multiset <int> hms5( hms1_bcIter, hms1_ecIter );

   // Create a hash_multiset hms6 by copying the range hms4[_First, _Last)
   // and with the allocator of hash_multiset hms2
   hash_multiset <int>::allocator_type hms2_Alloc;
   hms2_Alloc = hms2.get_allocator( );
   hash_multiset <int> hms6( hms4.begin( ), ++hms4.begin( ), 
      less<int>( ), hms2_Alloc );

   cout << "hms1 = ";
   for ( hms1_Iter = hms1.begin( ); hms1_Iter != hms1.end( );
         hms1_Iter++ )
      cout << *hms1_Iter << " ";
   cout << endl;
   
   cout << "hms2 = " ;
   for ( hms2_Iter = hms2.begin( ); hms2_Iter != hms2.end( );
         hms2_Iter++ )
      cout << *hms2_Iter << " ";
   cout << endl;

   cout << "hms3 = ";
   for ( hms3_Iter = hms3.begin( ); hms3_Iter != hms3.end( );
         hms3_Iter++ )
      cout << *hms3_Iter << " ";
   cout << endl;

   cout << "hms4 = ";
   for ( hms4_Iter = hms4.begin( ); hms4_Iter != hms4.end( );
         hms4_Iter++ )
      cout << *hms4_Iter << " ";
   cout << endl;

   cout << "hms5 = ";
   for ( hms5_Iter = hms5.begin( ); hms5_Iter != hms5.end( );
         hms5_Iter++ )
      cout << *hms5_Iter << " ";
   cout << endl;

   cout << "hms6 = ";
   for ( hms6_Iter = hms6.begin( ); hms6_Iter != hms6.end( );
         hms6_Iter++ )
      cout << *hms6_Iter << " ";
   cout << endl;

    // Create a copy, hash_multiset hms7, of hash_multiset hms1 by moving
    hash_multiset <int, hash_compare <int, less<int> > >
        hms7(move(hms1);
    cout << "hms7 =";
    for (hms7_Iter = hms7.begin(); hms7_Iter != hms7.end(); hms7_Iter++)
        cout << " " << hms7_Iter -> second;
    cout << endl;
}

Sortie

hms1 = 40 10 20 30 
hms2 = 10 20 
hms3 = 30 
hms4 = 40 10 20 30 
hms5 = 40 10 
hms6 = 40 
hms7 = 40 10 20 30 

Configuration requise

en-tête : <hash_set>

Stdext del'espace de noms :

Voir aussi

Référence

hash_multiset Class

Modèles Standard