hash_set::hash_set
Hinweis |
---|
Diese API ist veraltet.Die Alternative ist unordered_set Class. |
Erstellt hash_set, das leer ist oder, das eine Kopie von vollständig oder teilweise von anderen hash_set ist.
hash_set( );
explicit hash_set(
const Traits& _Comp
);
hash_set(
const Traits& _Comp,
const Allocator& _Al
);
hash_set(
const hash_set<Key, Traits, Allocator>& _Right
);
template<class InputIterator>
hash_set(
InputIterator _First,
InputIterator _Last
);
template<class InputIterator>
hash_set(
InputIterator _First,
InputIterator _Last,
const Traits& _Comp
);
template<class InputIterator>
hash_set(
InputIterator _First,
InputIterator _Last,
const Traits& _Comp,
const Allocator& _Al
);
hash_set(
hash_set&& _Right
);
Parameter
Parameter |
Description |
_Al |
Die für dieses Objekt hash_set verwendet werden, Speicherreservierungsklasse, das zu Allocator führt. |
_Comp |
Die Vergleichsfunktion des Typs const Traits verwendet, um Elemente in hash_set zu sortieren, der zu hash_compare führt. |
_Right |
hash_set, von denen erstellte hash_set, 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_set verwaltet und der später zurückgegeben werden kann, indem hash_set::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_sets.
Alle Konstruktoren speichern ein Funktionsobjekt des Typs Traits, der verwendet wird, um eine Bestellung unter dem Schlüssel hash_set zu erstellen und das später zurückgegeben werden kann, indem hash_set::key_comp aufruft.Weitere Informationen zu Traits finden Sie im Thema hash_set Class.
Die folgenden drei Konstruktoren geben leeres ursprüngliche hash_set 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 hash_set_Right an.
Die letzten drei Konstruktoren kopieren den Bereich [_First, _Last) von hash_set bei Erhöhung der Deutlichkeit, wenn sie den Typ der Vergleichsfunktion von Klassenmerkmalen und von Belegungsfunktion angeben.
Der letzte Konstruktor verschiebt hash_set_Right.
Die tatsächliche Reihenfolge der Elemente in einem hash_set 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_set_hash_set.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_set <int>::iterator hs1_Iter, hs3_Iter, hs4_Iter,
hs5_Iter, hs6_Iter, hs7_Iter;
hash_set <int, hash_compare <int, greater<int> > >::iterator
hs2_Iter;
// Create an empty hash_set hs0 of key type integer
hash_set <int> hs0;
// Create an empty hash_set hs1 with the key comparison
// function of less than, then insert 4 elements
hash_set <int, hash_compare <int, less<int> > > hs1;
hs1.insert( 10 );
hs1.insert( 20 );
hs1.insert( 30 );
hs1.insert( 40 );
// Create an empty hash_set hs2 with the key comparison
// function of geater than, then insert 2 elements
hash_set <int, hash_compare <int, greater<int> > > hs2;
hs2.insert(10);
hs2.insert(20);
// Create a hash_set hs3 with the
// allocator of hash_set hs1
hash_set <int>::allocator_type hs1_Alloc;
hs1_Alloc = hs1.get_allocator( );
hash_set <int> hs3( hash_compare <int, less<int> >( ),
hs1_Alloc );
hs3.insert( 30 );
// Create a copy, hash_set hs4, of hash_set hs1
hash_set <int> hs4( hs1 );
// Create a hash_set hs5 by copying the range hs1[_First, _Last)
hash_set <int>::const_iterator hs1_bcIter, hs1_ecIter;
hs1_bcIter = hs1.begin( );
hs1_ecIter = hs1.begin( );
hs1_ecIter++;
hs1_ecIter++;
hash_set <int> hs5( hs1_bcIter, hs1_ecIter );
// Create a hash_set hs6 by copying the range hs4[_First, _Last)
// and with the allocator of hash_set hs2
hash_set <int>::allocator_type hs2_Alloc;
hs2_Alloc = hs2.get_allocator( );
hash_set <int> hs6( hs4.begin( ), ++hs4.begin( ),
less<int>( ), hs2_Alloc );
cout << "hs1 = ";
for ( hs1_Iter = hs1.begin( ); hs1_Iter != hs1.end( );
hs1_Iter++ )
cout << *hs1_Iter << " ";
cout << endl;
cout << "hs2 = " ;
for ( hs2_Iter = hs2.begin( ); hs2_Iter != hs2.end( );
hs2_Iter++ )
cout << *hs2_Iter << " ";
cout << endl;
cout << "hs3 = ";
for ( hs3_Iter = hs3.begin( ); hs3_Iter != hs3.end( );
hs3_Iter++ )
cout << *hs3_Iter << " ";
cout << endl;
cout << "hs4 = ";
for ( hs4_Iter = hs4.begin( ); hs4_Iter != hs4.end( );
hs4_Iter++ )
cout << *hs4_Iter << " ";
cout << endl;
cout << "hs5 = ";
for ( hs5_Iter = hs5.begin( ); hs5_Iter != hs5.end( );
hs5_Iter++ )
cout << *hs5_Iter << " ";
cout << endl;
cout << "hs6 = ";
for ( hs6_Iter = hs6.begin( ); hs6_Iter != hs6.end( );
hs6_Iter++ )
cout << *hs6_Iter << " ";
cout << endl;
// Create a copy, hash_set hs7, of hash_set hs1 by moving
hash_set <int, hash_compare <int, less<int> > >
hs7(move(hs1);
cout << "hs7 =";
for (hs7_Iter = hs7.begin(); hs7_Iter != hs7.end(); hs7_Iter++)
cout << " " << hs7_Iter -> second;
cout << endl;
}
Ausgabe
hs1 = 40 10 20 30
hs2 = 10 20
hs3 = 30
hs4 = 40 10 20 30
hs5 = 40 10
hs6 = 40
hs7 = 40 10 20 30
Anforderungen
Header: <hash_set>
Namespace: stdext