Freigeben über


hash_multimap::hash_multimap

HinweisHinweis

Diese API ist veraltet.Die Alternative ist unordered_multimap Class.

Erstellt ein hash_multimap, das leer ist oder, das eine Kopie von vollständig oder teilweise etwas anderen hash_multimap ist.

hash_multimap( );
explicit hash_multimap(
   const Compare& _Comp
);
hash_multimap(
   const Compare& _Comp,
   const Allocator& _Al
);
hash_multimap(
   const hash_multimap& _Right
);
template<class InputIterator>
   hash_multimap(
      InputIterator _First,
      InputIterator _Last
   );
template<class InputIterator>
   hash_multimap(
      InputIterator _First,
      InputIterator _Last,
      const Compare& _Comp
   );
template<class InputIterator>
   hash_multimap(
      InputIterator _First,
      InputIterator _Last,
      const Compare& _Comp,
      const Allocator& _Al
   );
hash_multimap(
   hash_multimap&& _Right
);

Parameter

Parameter

Description

_Al

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

_Comp

Die Vergleichsfunktion des Typs constTraits verwendet, um Elemente in der Zuordnung zu sortieren, die zu Traits führt.

_Right

Die Zuordnung, von der der erstellte Satz, 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 das hash_multimap verwaltet und der später zurückgegeben werden kann, indem 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 ihr hash_multimap.

Alle Konstruktoren speichern ein Funktionsobjekt des Typs Traits, der verwendet wird, um eine Bestellung unter dem Schlüssel des hash_multimap zu erstellen und das später zurückgegeben werden kann, indem key_comp aufruft.

Die ersten drei Konstruktoren geben ein leeres ursprüngliche hash_multimap an, das den Typ der zweite, wenn sie verwendet werden Vergleichsfunktion (_Comp) wird die Reihenfolge der Elemente und der Drittels den verwendet werden Belegungsfunktionstyp (_Al) explizit angibt herstellen.Das - Schlüsselwort explicit unterdrückt bestimmte Arten der automatische Konvertierung.

Der vierte Konstruktor wird eine Kopie des hash_multimap _Right an.

Die folgenden drei Konstruktoren kopieren den Bereich [_First, _Last) einer Zuordnung bei Erhöhung der Deutlichkeit, wenn sie den Typ der Vergleichsfunktion der Klasse Traits und der Belegungsfunktion angeben.

Der letzte Konstruktor wird das hash_multimap _Right.

In Visual C++ .NET 2003, sind Member der <hash_map> und <hash_set> Headerdateien nicht mehr im stdnamespace, sondern sind in den stdext Namespace verschoben wurde.Weitere Informationen finden Sie unter Der stdext-Namespace.

Beispiel

// hash_multimap_hash_multimap.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   typedef pair <int, int> Int_Pair;
   hash_multimap <int, int>::iterator hm1_Iter, hm3_Iter, hm4_Iter, 
      hm5_Iter, hm6_Iter;
   hash_multimap <int, int, hash_compare <int, greater<int> > 
      >::iterator hm2_Iter;

   // Create an empty hash_multimap hm0 of key type integer
   hash_multimap <int, int> hm0;

   // Create an empty hash_multimap hm1 with the key comparison
   // function of less than, then insert 4 elements
   hash_multimap <int, int, hash_compare <int, less<int> > > hm1;
   hm1.insert( Int_Pair( 1, 10 ) );
   hm1.insert( Int_Pair( 2, 20 ) );
   hm1.insert( Int_Pair( 3, 30 ) );
   hm1.insert( Int_Pair( 4, 40 ) );

   // Create an empty hash_multimap hm2 with the key comparison
   // function of greater than, then insert 2 elements
   hash_multimap <int, int, hash_compare <int, greater<int> > > hm2;
   hm2.insert( Int_Pair( 1, 10 ) );
   hm2.insert( Int_Pair( 2, 20 ) );

   // Create a hash_multimap hm3 with the 
   // allocator of hash_multimap hm1
   hash_multimap <int, int>::allocator_type hm1_Alloc;
   hm1_Alloc = hm1.get_allocator( );
   hash_multimap <int, int> hm3( hash_compare <int, less<int> > ( ), 
      hm1_Alloc );
   hm3.insert( Int_Pair( 3, 30 ) );

   // Create a copy, hash_multimap hm4, of hash_multimap hm1
   hash_multimap <int, int> hm4( hm1 );

   // Create a hash_multimap hm5 by copying the range hm1[_First, _Last)
   hash_multimap <int, int>::const_iterator hm1_bcIter, hm1_ecIter;
   hm1_bcIter = hm1.begin( );
   hm1_ecIter = hm1.begin( );
   hm1_ecIter++;
   hm1_ecIter++;
   hash_multimap <int, int> hm5( hm1_bcIter, hm1_ecIter );

   // Create a hash_multimap hm6 by copying the range hm4[_First, _Last)
   // and with the allocator of hash_multimap hm2
   hash_multimap <int, int>::allocator_type hm2_Alloc;
   hm2_Alloc = hm2.get_allocator( );
   hash_multimap <int, int> hm6(hm4.begin( ), ++hm4.begin( ), less<int>( ), 
      hm2_Alloc);

   cout << "hm1 = ";
   for ( hm1_Iter = hm1.begin( ); hm1_Iter != hm1.end( ); hm1_Iter++ )
      cout << hm1_Iter -> second << " ";
   cout << endl;
   
   cout << "hm2 = ";
   for ( hm2_Iter = hm2.begin( ); hm2_Iter != hm2.end( ); hm2_Iter++ )
   cout << hm2_Iter -> second << " ";
   cout << endl;

   cout << "hm3 = ";
   for ( hm3_Iter = hm3.begin( ); hm3_Iter != hm3.end( ); hm3_Iter++ )
      cout << hm3_Iter -> second << " ";
   cout << endl;

   cout << "hm4 = ";
   for ( hm4_Iter = hm4.begin( ); hm4_Iter != hm4.end( ); hm4_Iter++ )
      cout << hm4_Iter -> second << " ";
   cout << endl;

   cout << "hm5 = ";
   for ( hm5_Iter = hm5.begin( ); hm5_Iter != hm5.end( ); hm5_Iter++ )
      cout << hm5_Iter -> second << " ";
   cout << endl;

   cout << "hm6 = ";
   for ( hm6_Iter = hm6.begin( ); hm6_Iter != hm6.end( ); hm6_Iter++ )
      cout << hm6_Iter -> second << " ";
   cout << endl;

    // Create a copy, hash_map hm7, of hash_multimap hm1 by moving
    hash_map<MyStr, MyInt, hash_compare<MyStr, less_str> >
        hm7(move(hm1));
    cout << "hm7 =";
    for (hm7_Iter = hm7.begin(); hm7_Iter != hm7.end(); hm7_Iter++)
        cout << " " << hm7_Iter -> second;
    cout << endl;
}

Ausgabe

hm1 = 10 20 30 40 
hm2 = 10 20 
hm3 = 30 
hm4 = 10 20 30 40 
hm5 = 10 20 
hm6 = 10 
hm7 = 10 20 30 40

Anforderungen

Header: <hash_map>

Namespace: stdext

Siehe auch

Referenz

hash_multimap Class

Standardvorlagenbibliothek