Freigeben über


hash_multiset::hash_multiset

HinweisHinweis

Diese API ist veraltet.Die Alternative ist unordered_multiset Class.

Erstellt hash_multiset, das leer ist oder, das eine Kopie von vollständig oder teilweise von anderen hash_multiset ist.

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
};

Parameter

Parameter

Description

_Al

Die für dieses Objekt hash_multiset verwendet werden, Speicherreservierungsklasse, das zu Allocator führt.

_Comp

Die Vergleichsfunktion des Typs const Traits verwendet, um Elemente in hash_multiset zu sortieren, der zu hash_compare führt.

_Right

hash_multiset, von denen erstellte hash_multiset, eine Kopie sein soll.

_First

Die Position des ersten Elements im Bereich von Elementen kopiert werden.

_Last

Die Position des ersten Elements über den Bereich von Elementen hinaus kopiert werden.

Hinweise

Alle Konstruktoren speichern einen Typ allocator-Objekt, das Arbeitsspeicherspeicher für hash_multiset verwaltet und der später zurückgegeben werden kann, indem hash_multiset::get_allocator aufruft.Der Belegungsfunktionsparameter wird häufig in Klassendeklarationen und in den Vorverarbeitungsmakros weggelassen, die verwendet werden, um alternative Belegungsfunktionen zu ersetzen.

Alle Konstruktoren initialisieren ihre hash_multisets.

Alle Konstruktoren speichern ein Funktionsobjekt des Typs Traits, der verwendet wird, um eine Bestellung unter dem Schlüssel hash_multiset zu erstellen und das später zurückgegeben werden kann, indem hash_multiset::key_comp aufruft.Weitere Informationen zu Traits finden Sie im Thema hash_multiset Class.

Die ersten drei Konstruktoren geben leeres ursprüngliches hash_multiset an, der zweite gibt den Typ der Vergleichsfunktion (_Comp) an, der zum Festlegen der Reihenfolge der Elemente verwendet werden soll, und der dritte gibt explizit den zu verwendenden Belegungsfunktionstyp (_Al) an.Das - Schlüsselwort explicit unterdrückt bestimmte Arten der automatische Konvertierung.

Der vierte Konstruktor wird eine Kopie hash_multiset_Right an.

Die folgenden drei Konstruktoren kopieren den Bereich [_First,_Last) von hash_multiset bei Erhöhung der Deutlichkeit, wenn sie den Typ der Vergleichsfunktion der Klasse angeben, vergleichen und Belegungsfunktion verwendet.

Der letzte Konstruktor verschiebt hash_multiset_Right.

Die tatsächliche Reihenfolge von Elementen in einem gehashten festgelegten Container hängt von der Hashfunktion, von der Reihenfolgenfunktion und von der aktuellen Größe der Hashtabelle ab und kann im Allgemeinen nicht vorhergesagt werden, da sie mit dem festgelegten Container kann, in dem sie durch die Reihenfolgenfunktion allein bestimmt wurde.

Beispiel

// 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;
}

Ausgabe

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 

Anforderungen

Header: <hash_set>

Namespace: stdext

Siehe auch

Referenz

hash_multiset Class

Standardvorlagenbibliothek