hash_multiset::hash_multiset
Hinweis |
---|
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