Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
De containerklasse hash_multiset is een uitbreiding van de C++-standaardbibliotheek en wordt gebruikt voor de opslag en het snel ophalen van gegevens uit een verzameling waarin de waarden van de elementen fungeren als de sleutelwaarden en niet uniek hoeven te zijn.
Syntaxis
template <class Key, class Traits =hash_compare<Key, less <Key>>, class Allocator =allocator <Key>>
class hash_multiset
Parameterwaarden
Sleutel
Het gegevenstype element dat moet worden opgeslagen in de hash_multiset.
eigenschappen
Het type dat twee functieobjecten bevat, een van klassevergelijkingen die een binair predicaat is waarmee twee elementwaarden kunnen worden vergeleken als sorteersleutels om hun relatieve volgorde te bepalen en een hash-functie die een unaire predicaat is die sleutelwaarden van de elementen toewijst aan niet-ondertekende gehele getallen van het type size_t. Dit argument is optioneel en de hash_compare<Key, less<Key> > standaardwaarde.
Allocator
Het type dat het opgeslagen allocatorobject vertegenwoordigt dat details bevat over de toewijzing en toewijzing van het geheugen van de hash_multiset. Dit argument is optioneel en de standaardwaarde is allocator<Key>.
Opmerkingen
De hash_multiset is:
Een associatieve container, die een container met variabele grootte ondersteunt die ondersteuning biedt voor het efficiënt ophalen van elementwaarden op basis van een gekoppelde sleutelwaarde. Verder is het een eenvoudige associatieve container omdat de elementwaarden de belangrijkste waarden zijn.
Omkeerbaar, omdat het een bidirectionele iterator biedt voor toegang tot de elementen.
Gehasht, omdat de elementen zijn gegroepeerd in buckets op basis van de waarde van een hash-functie die is toegepast op de sleutelwaarden van de elementen.
Uniek in de zin dat elk van de elementen een unieke sleutel moet hebben. Omdat hash_multiset ook een eenvoudige associatieve container is, zijn de elementen ook uniek.
Een klassesjabloon omdat de functionaliteit die het biedt algemeen is en zo onafhankelijk is van het specifieke type gegevens dat is opgenomen als elementen of sleutels. De gegevenstypen die moeten worden gebruikt voor elementen en sleutels, worden in plaats daarvan opgegeven als parameters in de klassesjabloon, samen met de vergelijkingsfunctie en allocator.
Het belangrijkste voordeel van hashing over sorteren is een grotere efficiëntie: een geslaagde hashing voert invoegingen, verwijderingen en vindt in constante gemiddelde tijd in vergelijking met een tijd die evenredig is met de logaritme van het aantal elementen in de container voor sorteertechnieken. De waarde van een element in een set kan niet rechtstreeks worden gewijzigd. In plaats daarvan moet u oude waarden verwijderen en elementen met nieuwe waarden invoegen.
De keuze van het containertype moet in het algemeen worden gebaseerd op het type zoeken en invoegen dat vereist is voor de toepassing. Gehashte associatieve containers zijn geoptimaliseerd voor de bewerkingen van opzoeken, invoegen en verwijderen. De lidfuncties die deze bewerkingen expliciet ondersteunen, zijn efficiënt wanneer ze worden gebruikt met een goed ontworpen hash-functie, waarbij ze worden uitgevoerd in een tijd die gemiddeld constant is en niet afhankelijk is van het aantal elementen in de container. Een goed ontworpen hash-functie produceert een uniforme verdeling van gehashte waarden en minimaliseert het aantal botsingen, waarbij een botsing wordt gezegd wanneer afzonderlijke sleutelwaarden worden toegewezen aan dezelfde gehashte waarde. In het ergste geval, met de slechtst mogelijke hash-functie, is het aantal bewerkingen evenredig met het aantal elementen in de reeks (lineaire tijd).
De hash_multiset moet de associatieve container van keuze zijn wanneer de voorwaarden die de waarden aan hun sleutels koppelen, voldoen aan de toepassing. De elementen van een hash_multiset kunnen meerdere zijn en fungeren als hun eigen sorteersleutels, dus sleutels zijn niet uniek. Een model voor dit type structuur is een geordende lijst met woorden waarin de woorden meer dan één keer voorkomen. Als meerdere exemplaren van de woorden niet zijn toegestaan, zou een hash_set de juiste containerstructuur zijn geweest. Als er unieke definities als waarden aan de lijst met unieke trefwoorden zijn gekoppeld, is een hash_map een geschikte structuur om deze gegevens te bevatten. Als in plaats daarvan de definities niet uniek waren, zou een hash_multimap de gewenste container zijn.
De hash_multiset ordenen de volgorde die deze beheert door een opgeslagen hash-eigenschappenobject van het type value_compare aan te roepen. Dit opgeslagen object kan worden geopend door de lidfunctie aan te roepen key_comp. Een dergelijk functieobject moet zich hetzelfde gedragen als een object van klasse hash_compare<Key, less<Key> >. Met name voor alle waarden sleutel van het type Keygeeft de aanroep Trait(Key) een verdeling van de waarden van het type size_t.
Over het algemeen moeten de elementen slechts kleiner zijn dan vergelijkbaar zijn om deze volgorde vast te stellen, zodat, gezien twee elementen, kan worden vastgesteld dat ze gelijkwaardig zijn (in de zin dat geen van beide minder is dan de andere) of dat de ene niet kleiner is dan de andere. Dit resulteert in een volgorde tussen de niet-quivalente elementen. Op een technischere opmerking is de vergelijkingsfunctie een binair predicaat dat een strikte zwakke volgorde veroorzaakt in de standaard wiskundige zin. Een binair predicaat f( x, y) is een functieobject met twee argumentobjecten x en y en een retourwaarde waar of onwaar. Een volgorde die wordt opgelegd aan een hash_multiset is een strikte zwakke orde als het binaire predicaat irreflexieve, antisymmetrische en transitieve is en als gelijkwaardigheid transitief is, waarbij twee objecten x en y zijn gedefinieerd als gelijkwaardig wanneer zowel f( x, y) als f( y, x) onwaar zijn. Als de sterkere voorwaarde van gelijkheid tussen sleutels dat van gelijkwaardigheid vervangt, wordt de volgorde in totaal (in de zin dat alle elementen met betrekking tot elkaar worden gerangschikt) en zijn de overeenkomende sleutels niet meer van elkaar te onderscheiden.
De werkelijke volgorde van elementen in de gecontroleerde volgorde is afhankelijk van de hash-functie, de volgordefunctie en de huidige grootte van de hash-tabel die is opgeslagen in het containerobject. U kunt de huidige grootte van de hash-tabel niet bepalen, dus u kunt de volgorde van elementen in de gecontroleerde volgorde niet voorspellen. Als u elementen invoegt, worden er geen iterators gebruikt en worden alleen de iterators die specifiek naar de verwijderde elementen hebben verwezen, ongeldig.
De iterator die wordt geleverd door de hash_multiset-klasse is een bidirectionele iterator, maar de functies van het klasselid invoegen en hash_multiset versies hebben die als sjabloonparameters een zwakkere invoer-iterator gebruiken, waarvan de functionaliteitsvereisten minimaal zijn dan die gegarandeerd door de klasse van bidirectionele iterators. De verschillende iteratorconcepten vormen een familie gerelateerd aan verfijningen in hun functionaliteit. Elk iterator-concept heeft een eigen hash_multiset van vereisten en de algoritmen die ermee werken, moeten hun veronderstellingen beperken tot de vereisten van dat type iterator. Er kan worden aangenomen dat een invoer-iterator kan worden gededucteerd om naar een bepaald object te verwijzen en dat het kan worden verhoogd naar de volgende iterator in de reeks. Dit is een minimale hash_multiset functionaliteit, maar het is voldoende om zinvol te kunnen praten over een reeks iterators [ first, last) in de context van de functies van het klasselid.
Constructeurs
| Constructeur | Beschrijving |
|---|---|
| hash_multiset | Hiermee wordt een hash_multiset leeg bestand gemaakt of dat een kopie is van alle of een deel van een andere hash_multiset. |
Typedefs
| Typenaam | Beschrijving |
|---|---|
| allocator_type | Een type dat de allocator-klasse voor het hash_multiset-object vertegenwoordigt. |
| const_iterator | Een type dat een bidirectionele iterator biedt die een const element in de hash_multiset. |
| const_pointer | Een type dat een aanwijzer naar een const element in een hash_multiset. |
| const_reference | Een type dat een verwijzing biedt naar een const element dat is opgeslagen in een hash_multiset voor het lezen en uitvoeren van const bewerkingen. |
| const_reverse_iterator | Een type dat een bidirectionele iterator biedt die elk const element in de hash_multiset. |
| difference_type | Een ondertekend geheel getaltype dat het verschil biedt tussen twee iterators die elementen binnen hetzelfde hash_multisetadresseert. |
| Iterator | Een type dat een bidirectionele iterator biedt die elk element in een hash_multiset. |
| key_compare | Een type dat een functieobject biedt waarmee twee sorteersleutels kunnen worden vergeleken om de relatieve volgorde van twee elementen in de hash_multiset. |
| key_type | Een type dat een object beschrijft dat is opgeslagen als een element van een hash_set object in de capaciteit als sorteersleutel. |
| aanwijzer | Een type dat een aanwijzer naar een element in een hash_multisetbiedt. |
| referentie | Een type dat een verwijzing biedt naar een element dat is opgeslagen in een hash_multiset. |
| reverse_iterator | Een type dat een bidirectionele iterator biedt waarmee een element in een omgekeerde weergave kan worden gelezen of gewijzigd hash_multiset. |
| size_type | Een niet-ondertekend geheel getaltype dat het aantal elementen in een hash_multiset. |
| value_compare | Een type dat twee functieobjecten biedt, een binair predicaat van klassevergelijking waarmee twee elementwaarden van een hash_multiset kunnen worden vergeleken om hun relatieve volgorde te bepalen en een unary predicaat dat de elementen hashes. |
| value_type | Een type dat een object beschrijft dat is opgeslagen als een element van een hash_multiset object in de capaciteit als een waarde. |
Functies voor leden
| Lid, functie | Beschrijving |
|---|---|
| beginnen | Retourneert een iterator die het eerste element in de hash_multiset. |
| cbegin | Retourneert een const iterator die het eerste element in de hash_multiset. |
| cend | Retourneert een const iterator die de locatie adresseert die het laatste element in een hash_multiset. |
| wissen | Hiermee worden alle elementen van een hash_multisetgewist. |
| aantal | Geeft als resultaat het aantal elementen in een wiens sleutel overeenkomt met een door een hash_multiset parameter opgegeven sleutel |
| crbegin | Retourneert een const iterator die het eerste element in een omgekeerd element aanpakt hash_multiset. |
| crend | Retourneert een const iterator waarmee de locatie wordt opgelost die het laatste element in een omgekeerde hash_multisetlocatie slaagt. |
| emplace | Hiermee voegt u een element in hash_multiseteen . |
| emplace_hint | Hiermee voegt u een element in hash_multiseteen , met een plaatsingshint. |
| leeg | Test of een hash_multiset leeg is. |
| einde | Retourneert een iterator waarmee de locatie wordt opgelost die het laatste element in een hash_multisetslaagt. |
| equal_range | Retourneert respectievelijk een paar iterators naar het eerste element in een hash_multiset met een sleutel die groter is dan een opgegeven sleutel en het eerste element in de hash_multiset sleutel met een sleutel die gelijk is aan of groter is dan de sleutel. |
| wissen | Hiermee verwijdert u een element of een reeks elementen in een hash_multiset opgegeven positie of verwijdert u elementen die overeenkomen met een opgegeven sleutel. |
| vinden | Retourneert een iterator die de locatie van een element in een hash_multiset dat een sleutel heeft die gelijk is aan een opgegeven sleutel. |
| get_allocator | Retourneert een kopie van het allocator object dat wordt gebruikt om de hash_multiset. |
| invoegen | Hiermee voegt u een element of een bereik van elementen in een hash_multiset. |
| key_comp | Hiermee wordt een kopie opgehaald van het vergelijkingsobject dat wordt gebruikt om sleutels in een hash_multiset. |
| lower_bound | Hiermee wordt een iterator geretourneerd naar het eerste element in een hash_multiset met een sleutel die gelijk is aan of groter is dan een opgegeven sleutel. |
| max_size | Geeft als resultaat de maximale lengte van de hash_multiset. |
| rbegin | Retourneert een iterator die het eerste element in een omgekeerde aanpak aanpakt hash_multiset. |
| rend | Retourneert een iterator waarmee de locatie wordt opgelost waarop het laatste element in een omgekeerde hash_multisetis geslaagd. |
| grootte | Geeft als resultaat het aantal elementen in de hash_multiset. |
| wisselen | Uitwisseling van de elementen van twee hash_multisets. |
| upper_bound | Retourneert een iterator naar het eerste element in een hash_multiset element met een sleutel die gelijk is aan of groter is dan een opgegeven sleutel. |
| value_comp | Hiermee wordt een kopie opgehaald van het hash-kenmerkobject dat wordt gebruikt voor hash- en orderelementsleutelwaarden in een hash_multiset. |
Bedieners
| Operateur | Beschrijving |
|---|---|
| hash_multiset::operator= | Vervangt de elementen van de hash_multiset door een kopie van een andere hash_multiset. |
Behoeften
Rubriek:<hash_set>
Naamruimte: stdext
hash_multiset::allocator_type
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een type dat de allocatorklasse vertegenwoordigt voor het hash_multiset-object.
typedef list<typename Traits::value_type, typename Traits::allocator_type>::allocator_type allocator_type;
Voorbeeld
Zie het voorbeeld voor get_allocator voor een voorbeeld met behulp van allocator_type
hash_multiset::begin
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert een iterator die het eerste element in de hash_multiset adresseert.
const_iterator begin() const;
iterator begin();
Retourwaarde
Een bidirectionele iterator die het eerste element in de hash_multiset of de locatie slaagt in een lege hash_multiset.
Opmerkingen
Als de retourwaarde is begin toegewezen aan een const_iterator, kunnen de elementen in het hash_multiset-object niet worden gewijzigd. Als de retourwaarde begin is toegewezen aan een iterator, kunnen de elementen in het hash_multiset-object worden gewijzigd.
Voorbeeld
// hash_multiset_begin.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1;
hash_multiset <int>::iterator hms1_Iter;
hash_multiset <int>::const_iterator hms1_cIter;
hms1.insert( 1 );
hms1.insert( 2 );
hms1.insert( 3 );
hms1_Iter = hms1.begin( );
cout << "The first element of hms1 is " << *hms1_Iter << endl;
hms1_Iter = hms1.begin( );
hms1.erase( hms1_Iter );
// The following 2 lines would err because the iterator is const
// hms1_cIter = hms1.begin( );
// hms1.erase( hms1_cIter );
hms1_cIter = hms1.begin( );
cout << "The first element of hms1 is now " << *hms1_cIter << endl;
}
The first element of hms1 is 1
The first element of hms1 is now 2
hash_multiset::cbegin
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert een const iterator die het eerste element in de hash_multiset aanpakt.
const_iterator cbegin() const;
Retourwaarde
Een const bidirectionele iterator die het eerste element in de hash_multiset of de locatie slaagt in een lege hash_multiset.
Opmerkingen
Met de retourwaarde van cbeginkan de elementen in het hash_multiset object niet worden gewijzigd.
Voorbeeld
// hash_multiset_cbegin.cpp
// compile with: /EHsc
#include <hash_multiset>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hs1;
hash_multiset <int>::const_iterator hs1_cIter;
hs1.insert( 1 );
hs1.insert( 2 );
hs1.insert( 3 );
hs1_cIter = hs1.cbegin( );
cout << "The first element of hs1 is " << *hs1_cIter << endl;
}
The first element of hs1 is 1
hash_multiset::cend
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert een const iterator waarmee de locatie wordt opgelost die het laatste element in een hash_multiset slaagt.
const_iterator cend() const;
Retourwaarde
Een const bidirectionele iterator die de locatie slaagt na het laatste element in een hash_multiset. Als de hash_multiset leeg is, hash_multiset::cend == hash_multiset::begin.
Opmerkingen
cend wordt gebruikt om te testen of een iterator het einde van de hash_multisetheeft bereikt. De waarde die wordt geretourneerd door cend mag niet worden afgetrokken.
Voorbeeld
// hash_multiset_cend.cpp
// compile with: /EHsc
#include <hash_multiset>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hs1;
hash_multiset <int> :: const_iterator hs1_cIter;
hs1.insert( 1 );
hs1.insert( 2 );
hs1.insert( 3 );
hs1_cIter = hs1.cend( );
hs1_cIter--;
cout << "The last element of hs1 is " << *hs1_cIter << endl;
}
The last element of hs1 is 3
hash_multiset::clear
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Hiermee worden alle elementen van een hash_multiset gewist.
void clear();
Voorbeeld
// hash_multiset_clear.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1;
hms1.insert( 1 );
hms1.insert( 2 );
cout << "The size of the hash_multiset is initially " << hms1.size( )
<< "." << endl;
hms1.clear( );
cout << "The size of the hash_multiset after clearing is "
<< hms1.size( ) << "." << endl;
}
The size of the hash_multiset is initially 2.
The size of the hash_multiset after clearing is 0.
hash_multiset::const_iterator
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een type dat een bidirectionele iterator biedt waarmee een const element in de hash_multiset kan worden gelezen.
typedef list<typename Traits::value_type, typename Traits::allocator_type>::const_iterator const_iterator;
Opmerkingen
Een type const_iterator kan niet worden gebruikt om de waarde van een element te wijzigen.
Voorbeeld
Zie het voorbeeld voor het begin van een voorbeeld met behulp van const_iterator.
hash_multiset::const_pointer
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een type dat een aanwijzer naar een const element in een hash_multiset biedt.
typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::const_pointer const_pointer;
Opmerkingen
Een type const_pointer kan niet worden gebruikt om de waarde van een element te wijzigen.
In de meeste gevallen moet een const_iterator worden gebruikt voor toegang tot de elementen in een const hash_multiset-object.
hash_multiset::const_reference
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een type dat een verwijzing biedt naar een const element dat is opgeslagen in een hash_multiset voor het lezen en uitvoeren van bewerkingen const .
typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::const_reference const_reference;
Voorbeeld
// hash_multiset_const_reference.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1;
hms1.insert( 10 );
hms1.insert( 20 );
// Declare and initialize a const_reference &Ref1
// to the 1st element
const int &Ref1 = *hms1.begin( );
cout << "The first element in the hash_multiset is "
<< Ref1 << "." << endl;
// The following line would cause an error because the
// const_reference cannot be used to modify the hash_multiset
// Ref1 = Ref1 + 5;
}
The first element in the hash_multiset is 10.
hash_multiset::const_reverse_iterator
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een type dat een bidirectionele iterator biedt die elk const element in de hash_multiset kan lezen.
typedef list<typename Traits::value_type, typename Traits::allocator_type>::const_reverse_iterator const_reverse_iterator;
Opmerkingen
Een type const_reverse_iterator kan de waarde van een element niet wijzigen en wordt gebruikt om de hash_multiset omgekeerd te doorlopen.
Voorbeeld
Zie het voorbeeld voor rend voor een voorbeeld van het declareren en gebruiken van de const_reverse_iterator.
hash_multiset::count
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert het aantal elementen in een hash_multiset waarvan de sleutel overeenkomt met een door een parameter opgegeven sleutel.
size_type count(const Key& key) const;
Parameterwaarden
sleutel
De sleutel van de elementen die moeten worden vergeleken met de hash_multiset.
Retourwaarde
Het aantal elementen in de hash_multiset met de parameter opgegeven sleutel.
Opmerkingen
De lidfunctie retourneert het aantal elementen in het volgende bereik:
[ lower_bound(key), upper_bound(key) ).
Voorbeeld
In het volgende voorbeeld ziet u het gebruik van de functie hash_multiset::count member.
// hash_multiset_count.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset<int> hms1;
hash_multiset<int>::size_type i;
hms1.insert(1);
hms1.insert(1);
// Keys do not need to be unique in hash_multiset,
// so duplicates may exist.
i = hms1.count(1);
cout << "The number of elements in hms1 with a sort key of 1 is: "
<< i << "." << endl;
i = hms1.count(2);
cout << "The number of elements in hms1 with a sort key of 2 is: "
<< i << "." << endl;
}
The number of elements in hms1 with a sort key of 1 is: 2.
The number of elements in hms1 with a sort key of 2 is: 0.
hash_multiset::crbegin
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert een const iterator die het eerste element in een omgekeerde hash_multiset aanpakt.
const_reverse_iterator crbegin() const;
Retourwaarde
Een const omgekeerde bidirectionele iterator adresseren het eerste element in een omgekeerde hash_multiset of het aanpakken van wat het laatste element in de ongedraaide hash_multiset.
Opmerkingen
crbegin wordt gebruikt met een omgekeerde hash_multiset , net zoals hash_multiset::begin wordt gebruikt met een hash_multiset.
Met de retourwaarde van crbeginkan het hash_multiset object niet worden gewijzigd.
crbegin kan worden gebruikt om een hash_multiset achteruit te doorlopen.
Voorbeeld
// hash_multiset_crbegin.cpp
// compile with: /EHsc
#include <hash_multiset>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hs1;
hash_multiset <int>::const_reverse_iterator hs1_crIter;
hs1.insert( 10 );
hs1.insert( 20 );
hs1.insert( 30 );
hs1_crIter = hs1.crbegin( );
cout << "The first element in the reversed hash_multiset is "
<< *hs1_crIter << "." << endl;
}
The first element in the reversed hash_multiset is 30.
hash_multiset::crend
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert een const iterator die de locatie afspreekt waarop het laatste element in een omgekeerde hash_multiset is geslaagd.
const_reverse_iterator crend() const;
Retourwaarde
Een omgekeerde bidirectionele iterator waarmee de locatie wordt opgelost waarop het laatste element in een omgekeerde hash_multiset is geslaagd (de locatie die voorafging aan het eerste element in de niet-omgedraaide hash_multiset).
Opmerkingen
crend wordt gebruikt met een omgekeerde hash_multiset , net zoals hash_multiset::end wordt gebruikt met een hash_multiset.
Met de retourwaarde van crendkan het hash_multiset object niet worden gewijzigd.
crend kan worden gebruikt om te testen of een omgekeerde iterator het einde van de hash_multiset heeft bereikt.
Voorbeeld
// hash_multiset_crend.cpp
// compile with: /EHsc
#include <hash_multiset>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hs1;
hash_multiset <int>::const_reverse_iterator hs1_crIter;
hs1.insert( 10 );
hs1.insert( 20 );
hs1.insert( 30 );
hs1_crIter = hs1.crend( );
hs1_crIter--;
cout << "The last element in the reversed hash_multiset is "
<< *hs1_crIter << "." << endl;
}
The last element in the reversed hash_multiset is 10.
hash_multiset::d deductietype
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een ondertekend geheel getaltype dat het verschil biedt tussen twee iterators die elementen binnen dezelfde hash_multiset adresseert.
typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::difference_type difference_type;
Opmerkingen
Dit difference_type is het type dat wordt geretourneerd bij het aftrekken of verhogen van iterators van de container. Het difference_type wordt meestal gebruikt om het aantal elementen in het bereik [ first, last) tussen de iterators first weer te geven en lastbevat het element dat is verwezen door first en het bereik van elementen tot, maar niet inclusief, het element dat door wordt verwezen last.
Houd er rekening mee dat hoewel difference_type deze beschikbaar is voor alle iterators die voldoen aan de vereisten van een invoer-iterator, die de klasse van bidirectionele iterators bevat die worden ondersteund door omkeerbare containers, zoals set. Aftrekken tussen iterators wordt alleen ondersteund door iterators voor willekeurige toegang die wordt geleverd door een container met willekeurige toegang, zoals vector of deque.
Voorbeeld
// hash_multiset_diff_type.cpp
// compile with: /EHsc
#include <iostream>
#include <hash_set>
#include <algorithm>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1;
hash_multiset <int>::iterator hms1_Iter, hms1_bIter, hms1_eIter;
hms1.insert( 20 );
hms1.insert( 10 );
// hash_multiset elements need not be unique
hms1.insert( 20 );
hms1_bIter = hms1.begin( );
hms1_eIter = hms1.end( );
hash_multiset <int>::difference_type df_typ5, df_typ10,
df_typ20;
df_typ5 = count( hms1_bIter, hms1_eIter, 5 );
df_typ10 = count( hms1_bIter, hms1_eIter, 10 );
df_typ20 = count( hms1_bIter, hms1_eIter, 20 );
// The keys & hence the elements of a hash_multiset
// need not be unique and may occur multiple times
cout << "The number '5' occurs " << df_typ5
<< " times in hash_multiset hms1.\n";
cout << "The number '10' occurs " << df_typ10
<< " times in hash_multiset hms1.\n";
cout << "The number '20' occurs " << df_typ20
<< " times in hash_multiset hms1.\n";
// Count the number of elements in a hash_multiset
hash_multiset <int>::difference_type df_count = 0;
hms1_Iter = hms1.begin( );
while ( hms1_Iter != hms1_eIter)
{
df_count++;
hms1_Iter++;
}
cout << "The number of elements in the hash_multiset hms1 is "
<< df_count << "." << endl;
}
The number '5' occurs 0 times in hash_multiset hms1.
The number '10' occurs 1 times in hash_multiset hms1.
The number '20' occurs 2 times in hash_multiset hms1.
The number of elements in the hash_multiset hms1 is 3.
hash_multiset::emplace
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Hiermee voegt u een element in een hash_multiset.
template <class ValTy>
iterator insert(ValTy&& val);
Parameterwaarden
val-
De waarde van een element dat in de hash_multiset moet worden ingevoegd, tenzij het hash_multiset element al bevat of, meer in het algemeen, een element waarvan de sleutel gelijkgeordend is.
Retourwaarde
De emplace lidfunctie retourneert een iterator die verwijst naar de positie waar het nieuwe element is ingevoegd.
Voorbeeld
// hash_multiset_emplace.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
#include <string>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset<string> hms3;
string str1("a");
hms3.emplace(move(str1));
cout << "After the emplace insertion, hms3 contains "
<< *hms3.begin() << "." << endl;
}
After the emplace insertion, hms3 contains a.
hash_multiset::emplace_hint
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Hiermee voegt u een element in een hash_multiset in, met een plaatsingshint.
template <class ValTy>
iterator insert(
const_iterator where,
ValTy&& val);
Parameterwaarden
val-
De waarde van een element dat in de hash_multiset moet worden ingevoegd, tenzij het hash_multiset element al bevat of, meer in het algemeen, een element waarvan de sleutel gelijkgeordend is.
waar
De plaats om te beginnen met zoeken naar het juiste invoegpunt. (Invoeging kan optreden in afgeschreven constante tijd, in plaats van logaritmische tijd, als de invoegpositie direct volgt waar.)
Retourwaarde
De functie hash_multiset::emplace retourneert een iterator die verwijst naar de positie waar het nieuwe element is ingevoegd in de hash_multiset.
Opmerkingen
Invoeging kan optreden in afgeschreven constante tijd, in plaats van logaritmische tijd, als de invoegpositie onmiddellijk volgt waar.
Voorbeeld
// hash_multiset_emplace_hint.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
#include <string>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset<string> hms1;
string str1("a");
hms1.insert(hms1.begin(), move(str1));
cout << "After the emplace insertion, hms1 contains "
<< *hms1.begin() << "." << endl;
}
After the emplace insertion, hms1 contains a.
hash_multiset::leeg
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Test of een hash_multiset leeg is.
bool empty() const;
Retourwaarde
true als de hash_multiset leeg is; false als de hash_multiset geenmpty is.
Voorbeeld
// hash_multiset_empty.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1, hms2;
hms1.insert ( 1 );
if ( hms1.empty( ) )
cout << "The hash_multiset hms1 is empty." << endl;
else
cout << "The hash_multiset hms1 is not empty." << endl;
if ( hms2.empty( ) )
cout << "The hash_multiset hms2 is empty." << endl;
else
cout << "The hash_multiset hms2 is not empty." << endl;
}
The hash_multiset hms1 is not empty.
The hash_multiset hms2 is empty.
hash_multiset::end
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert een iterator die de locatie adresseert die het laatste element in een hash_multiset slaagt.
const_iterator end() const;
iterator end();
Retourwaarde
Een bidirectionele iterator die de locatie adresseert die het laatste element in een hash_multiset slaagt. Als de hash_multiset leeg is, hash_multiset::end == hash_multiset::begin.
Opmerkingen
end wordt gebruikt om te testen of een iterator het einde van de hash_multiset heeft bereikt. De waarde die wordt geretourneerd door end mag niet worden afgetrokken.
Voorbeeld
// hash_multiset_end.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1;
hash_multiset <int> :: iterator hms1_Iter;
hash_multiset <int> :: const_iterator hms1_cIter;
hms1.insert( 1 );
hms1.insert( 2 );
hms1.insert( 3 );
hms1_Iter = hms1.end( );
hms1_Iter--;
cout << "The last element of hms1 is " << *hms1_Iter << endl;
hms1.erase( hms1_Iter );
// The following 3 lines would err because the iterator is const
// hms1_cIter = hms1.end( );
// hms1_cIter--;
// hms1.erase( hms1_cIter );
hms1_cIter = hms1.end( );
hms1_cIter--;
cout << "The last element of hms1 is now " << *hms1_cIter << endl;
}
The last element of hms1 is 3
The last element of hms1 is now 2
hash_multiset::equal_range
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert respectievelijk een paar iterators naar het eerste element in een hash_multiset met een sleutel die groter is dan een opgegeven sleutel en het eerste element in de hash_multiset met een sleutel die gelijk is aan of groter is dan de sleutel.
pair <const_iterator, const_iterator> equal_range (const Key& key) const;
pair <iterator, iterator> equal_range (const Key& key);
Parameterwaarden
sleutel
De argumentsleutel die moet worden vergeleken met de sorteersleutel van een element uit de hash_multiset die wordt doorzocht.
Retourwaarde
Een paar iterators waarbij de eerste de lower_bound van de sleutel is en de tweede is de upper_bound van de sleutel.
Als u toegang wilt krijgen tot de eerste iterator van een paar pr dat wordt geretourneerd door de lidfunctie, gebruikt u pr.
gebruik eerst *(pr) om de ondergrens-iterator te deducteren. eerst). Als u toegang wilt krijgen tot de tweede iterator van een paar pr dat wordt geretourneerd door de lidfunctie, gebruikt u pr.
ten tweede en om de bovengrens-iterator te deducteren, gebruikt u *(pr. seconde).
Voorbeeld
// hash_multiset_equal_range.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
typedef hash_multiset<int> IntHSet;
IntHSet hms1;
hash_multiset <int> :: const_iterator hms1_RcIter;
hms1.insert( 10 );
hms1.insert( 20 );
hms1.insert( 30 );
pair <IntHSet::const_iterator, IntHSet::const_iterator> p1, p2;
p1 = hms1.equal_range( 20 );
cout << "The upper bound of the element with "
<< "a key of 20\nin the hash_multiset hms1 is: "
<< *(p1.second) << "." << endl;
cout << "The lower bound of the element with "
<< "a key of 20\nin the hash_multiset hms1 is: "
<< *(p1.first) << "." << endl;
// Compare the upper_bound called directly
hms1_RcIter = hms1.upper_bound( 20 );
cout << "A direct call of upper_bound( 20 ) gives "
<< *hms1_RcIter << "," << endl
<< "matching the 2nd element of the pair"
<< " returned by equal_range( 20 )." << endl;
p2 = hms1.equal_range( 40 );
// If no match is found for the key,
// both elements of the pair return end( )
if ( ( p2.first == hms1.end( ) )
&& ( p2.second == hms1.end( ) ) )
cout << "The hash_multiset hms1 doesn't have an element "
<< "with a key less than 40." << endl;
else
cout << "The element of hash_multiset hms1"
<< "with a key >= 40 is: "
<< *(p1.first) << "." << endl;
}
The upper bound of the element with a key of 20
in the hash_multiset hms1 is: 30.
The lower bound of the element with a key of 20
in the hash_multiset hms1 is: 20.
A direct call of upper_bound( 20 ) gives 30,
matching the 2nd element of the pair returned by equal_range( 20 ).
The hash_multiset hms1 doesn't have an element with a key less than 40.
hash_multiset::gum
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Hiermee verwijdert u een element of een reeks elementen in een hash_multiset uit opgegeven posities of verwijdert u elementen die overeenkomen met een opgegeven sleutel.
iterator erase(iterator where);
iterator erase(iterator first, iterator last);
size_type erase(const key_type& key);
Parameterwaarden
waar
De positie van het element dat uit de hash_multiset moet worden verwijderd.
eerste
Positie van het eerste element dat uit de hash_multiset is verwijderd.
laatste
Positie vlak voorbij het laatste element dat uit de hash_multiset is verwijderd.
sleutel
De sleutel van de elementen die uit de hash_multiset moeten worden verwijderd.
Retourwaarde
Voor de eerste twee lidfuncties, een bidirectionele iterator die het eerste element aanwijst dat buiten alle verwijderde elementen blijft, of een aanwijzer naar het einde van de hash_multiset als er geen dergelijk element bestaat. Voor de functie derde lid is het aantal elementen dat uit de hash_multiset is verwijderd.
Opmerkingen
De lidfuncties genereren nooit een uitzondering.
Voorbeeld
In het volgende voorbeeld ziet u het gebruik van de functie hash_multiset::gumlid.
// hash_multiset_erase.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main()
{
using namespace std;
using namespace stdext;
hash_multiset<int> hms1, hms2, hms3;
hash_multiset<int> :: iterator pIter, Iter1, Iter2;
int i;
hash_multiset<int>::size_type n;
for (i = 1; i < 5; i++)
{
hms1.insert(i);
hms2.insert(i * i);
hms3.insert(i - 1);
}
// The 1st member function removes an element at a given position
Iter1 = ++hms1.begin();
hms1.erase(Iter1);
cout << "After the 2nd element is deleted,\n"
<< "the hash_multiset hms1 is:" ;
for (pIter = hms1.begin(); pIter != hms1.end(); pIter++)
cout << " " << *pIter;
cout << "." << endl;
// The 2nd member function removes elements
// in the range [ first, last)
Iter1 = ++hms2.begin();
Iter2 = --hms2.end();
hms2.erase(Iter1, Iter2);
cout << "After the middle two elements are deleted,\n"
<< "the hash_multiset hms2 is:" ;
for (pIter = hms2.begin(); pIter != hms2.end(); pIter++)
cout << " " << *pIter;
cout << "." << endl;
// The 3rd member function removes elements with a given key
n = hms3.erase(2);
cout << "After the element with a key of 2 is deleted,\n"
<< "the hash_multiset hms3 is:" ;
for (pIter = hms3.begin(); pIter != hms3.end(); pIter++)
cout << " " << *pIter;
cout << "." << endl;
// The 3rd member function returns the number of elements removed
cout << "The number of elements removed from hms3 is: "
<< n << "." << endl;
// The dereferenced iterator can also be used to specify a key
Iter1 = ++hms3.begin();
hms3.erase(Iter1);
cout << "After another element with a key "
<< "equal to that of the 2nd element\n"
<< "is deleted, the hash_multiset hms3 is:" ;
for (pIter = hms3.begin(); pIter != hms3.end(); pIter++)
cout << " " << *pIter;
cout << "." << endl;
}
After the 2nd element is deleted,
the hash_multiset hms1 is: 1 3 4.
After the middle two elements are deleted,
the hash_multiset hms2 is: 16 4.
After the element with a key of 2 is deleted,
the hash_multiset hms3 is: 0 1 3.
The number of elements removed from hms3 is: 1.
After another element with a key equal to that of the 2nd element
is deleted, the hash_multiset hms3 is: 0 3.
hash_multiset::find
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert een iterator die de locatie van een element in een hash_multiset adresseert die een sleutel heeft die gelijk is aan een opgegeven sleutel.
iterator find(const Key& key);
const_iterator find(const Key& key) const;
Parameterwaarden
sleutel
De argumentsleutel die moet worden vergeleken met de sorteersleutel van een element uit de hash_multiset die wordt doorzocht.
Retourwaarde
Een iterator of const_iterator die de locatie van een element dat overeenkomt met een opgegeven sleutel, of die de locatie adresseert die het laatste element in de hash_multiset slaagt als er geen overeenkomst voor de sleutel wordt gevonden.
Opmerkingen
De lidfunctie retourneert een iterator die een element in de hash_multiset aangeeft waarvan de sorteersleutel de argumentsleutel is equivalent onder een binair predicaat dat een volgorde veroorzaakt op basis van een relatie met minder dan vergelijkbaarheid.
Als de retourwaarde is find toegewezen aan een const_iterator, kan het hash_multiset object niet worden gewijzigd. Als de retourwaarde find aan een iteratorobject is toegewezen, kan het hash_multiset object worden gewijzigd.
Voorbeeld
// hash_multiset_find.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1;
hash_multiset <int> :: const_iterator hms1_AcIter, hms1_RcIter;
hms1.insert( 10 );
hms1.insert( 20 );
hms1.insert( 30 );
hms1_RcIter = hms1.find( 20 );
cout << "The element of hash_multiset hms1 with a key of 20 is: "
<< *hms1_RcIter << "." << endl;
hms1_RcIter = hms1.find( 40 );
// If no match is found for the key, end( ) is returned
if ( hms1_RcIter == hms1.end( ) )
cout << "The hash_multiset hms1 doesn't have an element "
<< "with a key of 40." << endl;
else
cout << "The element of hash_multiset hms1 with a key of 40 is: "
<< *hms1_RcIter << "." << endl;
// The element at a specific location in the hash_multiset can be found
// by using a dereferenced iterator addressing the location
hms1_AcIter = hms1.end( );
hms1_AcIter--;
hms1_RcIter = hms1.find( *hms1_AcIter );
cout << "The element of hms1 with a key matching "
<< "that of the last element is: "
<< *hms1_RcIter << "." << endl;
}
The element of hash_multiset hms1 with a key of 20 is: 20.
The hash_multiset hms1 doesn't have an element with a key of 40.
The element of hms1 with a key matching that of the last element is: 30.
hash_multiset::get_allocator
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert een kopie van het allocatorobject dat wordt gebruikt om de hash_multiset samen te stellen.
Allocator get_allocator() const;
Retourwaarde
De allocator die door de hash_multiset wordt gebruikt voor het beheren van geheugen. Dit is de sjabloonparameter Allocatorvan de klasse.
Zie de sectie Opmerkingen van het Allocator voor meer informatie.
Opmerkingen
Toewijzingen voor de hash_multiset-klasse geven aan hoe de klasse opslag beheert. De standaard-toewijzingen die worden geleverd met C++ Standard Library-containerklassen zijn voldoende voor de meeste programmeerbehoeften. Schrijven en gebruiken van uw eigen allocatorklasse is een geavanceerd C++-onderwerp.
Voorbeeld
// hash_multiset_get_allocator.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
// The following lines declare objects
// that use the default allocator.
hash_multiset <int, hash_compare <int, less<int> > > hms1;
hash_multiset <int, hash_compare <int, greater<int> > > hms2;
hash_multiset <double, hash_compare <double,
less<double> >, allocator<double> > hms3;
hash_multiset <int, hash_compare <int,
greater<int> > >::allocator_type hms2_Alloc;
hash_multiset <double>::allocator_type hms3_Alloc;
hms2_Alloc = hms2.get_allocator( );
cout << "The number of integers that can be allocated"
<< endl << "before free memory is exhausted: "
<< hms1.max_size( ) << "." << endl;
cout << "The number of doubles that can be allocated"
<< endl << "before free memory is exhausted: "
<< hms3.max_size( ) << "." << endl;
// The following lines create a hash_multiset hms4
// with the allocator of hash_multiset hms1.
hash_multiset <int>::allocator_type hms4_Alloc;
hash_multiset <int> hms4;
hms4_Alloc = hms2.get_allocator( );
// Two allocators are interchangeable if
// storage allocated from each can be
// deallocated by the other
if( hms2_Alloc == hms4_Alloc )
{
cout << "The allocators are interchangeable."
<< endl;
}
else
{
cout << "The allocators are not interchangeable."
<< endl;
}
}
hash_multiset::hash_multiset
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Hiermee wordt een hash_multiset leeg bestand gemaakt of dat een kopie is van alle of een deel van een andere 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);
hash_multiset(
hash_multiset&& Right
);
hash_multiset (initializer_list<Type> IList);
hash_multiset(
initializer_list<Type> IList, const Compare& Comp):
hash_multiset(
initializer_list<Type> IList, const Compare& Comp, const Allocator& Al);
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);
Parameterwaarden
Al
De opslag-allocatorklasse die moet worden gebruikt voor dit hash_multiset object, dat standaard wordt gebruikt Allocator.
Comp
De vergelijkingsfunctie van het type const Traits dat wordt gebruikt om de elementen in de hash_multisetstandaardinstelling hash_comparete ordenen.
Rechts
De hash_multiset waarvan de geconstrueerde hash_multiset een kopie moet zijn.
eerste
De positie van het eerste element in het bereik van elementen dat moet worden gekopieerd.
laatste
De positie van het eerste element buiten het bereik van elementen dat moet worden gekopieerd.
IList
De initializer_list die de elementen bevat die moeten worden gekopieerd.
Opmerkingen
Alle constructors slaan een type allocatorobject op dat de geheugenopslag voor de hash_multiset en die later kan worden geretourneerd door hash_multiset::get_allocator aan te roepen. De allocatorparameter wordt vaak weggelaten in de klassedeclaraties en voorverwerkingsmacro's die worden gebruikt om alternatieve allocators te vervangen.
Alle constructors initialiseren hun hash_multisets.
Alle constructors slaan een functieobject van het type Traits op dat wordt gebruikt om een volgorde tot stand te brengen tussen de sleutels en hash_multiset die later kunnen worden geretourneerd door hash_multiset::key_comp aan te roepen. Zie het Traits voor meer informatie.
De eerste drie constructors geven een lege initiële hash_multisetop, de tweede die het type vergelijkingsfunctie (Comp) aangeeft dat moet worden gebruikt bij het vaststellen van de volgorde van de elementen en het derde expliciet opgeven van het type allocator (Al) dat moet worden gebruikt. Het trefwoord explicit onderdrukt bepaalde soorten automatische typeconversie.
De vierde constructor verplaatst de hash_multisetRight.
De vijfde, zesde en zevende constructors gebruiken een initializer_list.
De laatste drie constructors kopiëren het bereik [ first, last) van een hash_multiset met toenemende explicietheid bij het opgeven van het type vergelijkingsfunctie van klasse Vergelijken en allocator.
De werkelijke volgorde van elementen in een gehashte setcontainer is afhankelijk van de hash-functie, de volgordefunctie en de huidige grootte van de hash-tabel en kan in het algemeen niet worden voorspeld zoals het kan met de setcontainer, waar deze alleen is bepaald door de volgordefunctie.
hash_multiset::insert
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Hiermee voegt u een element of een reeks elementen in een hash_multiset in.
iterator insert(
const Type& value);
iterator insert(
iterator where,
const Type& Al);
void insert(
initializer_list<Type> IList);
iterator insert(
const Type& value);
iterator insert(
Iterator where,
const Type& value);
template <class InputIterator>
void insert(
InputIterator first,
InputIterator last);
template <class ValTy>
iterator insert(
ValTy&& value);
template <class ValTy>
iterator insert(
const_iterator where,
ValTy&& value);
Parameterwaarden
waarde
De waarde van een element dat in de hash_multiset moet worden ingevoegd, tenzij de hash_multiset dat element al bevat of, meer in het algemeen, een element waarvan de sleutel gelijkwaardig is gerangschikt.
waar
De plaats om te beginnen met zoeken naar het juiste invoegpunt. (Invoeging kan optreden in afgeschreven constante tijd, in plaats van logaritmische tijd, als de invoegpositie direct volgt waar.)
eerste
De positie van het eerste element dat moet worden gekopieerd uit een hash_multiset.
laatste
De positie net buiten het laatste element dat moet worden gekopieerd uit een hash_multiset.
IList
De initializer_list die de elementen bevat die moeten worden gekopieerd.
Retourwaarde
De eerste twee invoegfuncties retourneren een iterator die verwijst naar de positie waar het nieuwe element is ingevoegd.
De volgende drie lidfuncties gebruiken een initializer_list.
Met de functie derde lid wordt de reeks elementwaarden ingevoegd in een hash_multiset die overeenkomt met elk element dat wordt geadresseerd door een iterator van het bereik [ first, last) van een opgegeven hash_multiset.
Opmerkingen
Invoeging kan optreden in afgeschreven constante tijd voor de hintversie van invoegen, in plaats van logaritmische tijd, als de invoegpositie onmiddellijk volgt waar.
hash_multiset::iterator
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een type dat een bidirectionele iterator biedt waarmee elk element in een hash_multiset kan worden gelezen of gewijzigd.
typedef list<typename Traits::value_type, typename Traits::allocator_type>::iterator iterator;
Opmerkingen
Een type iterator kan worden gebruikt om de waarde van een element te wijzigen.
Voorbeeld
Zie het voorbeeld voor een voorbeeld van het declareren en gebruiken iteratorvan .
hash_multiset::key_comp
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Hiermee wordt een kopie opgehaald van het vergelijkingsobject dat wordt gebruikt om sleutels in een hash_multiset te ordenen.
key_compare key_comp() const;
Retourwaarde
Retourneert de hash_multiset sjabloonparameter Traits, die functieobjecten bevat die worden gebruikt om de elementen van de container te hashen en te ordenen.
Zie het onderwerp hash_multiset Klas voor meer informatie over eigenschappen.
Opmerkingen
Het opgeslagen object definieert een lidfunctie:
bool operator<(const Key& _xVal, const Key& _yVal);
die retourneert true als _xVal deze voorafgaat en niet gelijk is aan _yVal in de sorteervolgorde.
Houd er rekening mee dat zowel key_compare alsvalue_comparesynoniemen zijn voor de sjabloonparameterEigenschappen. Beide typen worden geleverd voor de hash_multiset- en hash_multiset-klassen, waar ze identiek zijn, voor compatibiliteit met de hash_map- en hash_multimap-klassen, waar ze verschillend zijn.
Voorbeeld
// hash_multiset_key_comp.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int, hash_compare < int, less<int> > >hms1;
hash_multiset<int, hash_compare < int, less<int> > >::key_compare kc1
= hms1.key_comp( ) ;
bool result1 = kc1( 2, 3 ) ;
if( result1 == true )
{
cout << "kc1( 2,3 ) returns value of true, "
<< "where kc1 is the function object of hms1."
<< endl;
}
else
{
cout << "kc1( 2,3 ) returns value of false "
<< "where kc1 is the function object of hms1."
<< endl;
}
hash_multiset <int, hash_compare < int, greater<int> > > hms2;
hash_multiset<int, hash_compare < int, greater<int> > >::key_compare
kc2 = hms2.key_comp( ) ;
bool result2 = kc2( 2, 3 ) ;
if( result2 == true )
{
cout << "kc2( 2,3 ) returns value of true, "
<< "where kc2 is the function object of hms2."
<< endl;
}
else
{
cout << "kc2( 2,3 ) returns value of false, "
<< "where kc2 is the function object of hms2."
<< endl;
}
}
hash_multiset::key_compare
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een type dat twee functieobjecten biedt, een binair predicaat van klassevergelijking waarmee twee elementwaarden van een hash_multiset kunnen worden vergeleken om hun relatieve volgorde te bepalen en een unaire predicaat dat de elementen hashes.
typedef Traits key_compare;
Opmerkingen
key_compare is een synoniem voor de sjabloonparameter Traits.
Zie het onderwerp hash_multiset Klas voor meer informatie over eigenschappen.
Houd er rekening mee dat zowel key_compare als value_compare synoniemen zijn voor de sjabloonparameter Traits. Beide typen worden geleverd voor de hash_set- en hash_multiset-klassen, waar ze identiek zijn, voor compatibiliteit met de hash_map- en hash_multimap-klassen, waar ze verschillend zijn.
Voorbeeld
Zie een voorbeeld voor key_comp voor een voorbeeld van het declareren en gebruiken key_comparevan .
hash_multiset::key_type
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een type dat een functieobject biedt waarmee sorteersleutels kunnen worden vergeleken om de relatieve volgorde van twee elementen in de hash_multiset te bepalen.
typedef Key key_type;
Opmerkingen
key_type is een synoniem voor de parametersleutel van de sjabloon.
Houd er rekening mee dat zowel key_typeals value_type synoniemen zijn voor de parametersleutel van de sjabloon. Beide typen worden geleverd voor de set- en multisetklassen, waar ze identiek zijn, voor compatibiliteit met de kaart- en multimapklassen, waar ze verschillend zijn.
Zie de sectie Opmerkingen van het onderwerp hash_multiset Klas voor meer informatie over Key.
Voorbeeld
Zie een voorbeeld voor value_type voor een voorbeeld van het declareren en gebruiken key_typevan .
hash_multiset::lower_bound
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert een iterator naar het eerste element in een hash_multiset met een sleutel die gelijk is aan of groter is dan een opgegeven sleutel.
const_iterator lower_bound(const Key& key) const;
iterator lower_bound(const Key& key);
Parameterwaarden
sleutel
De argumentsleutel die moet worden vergeleken met de sorteersleutel van een element uit de hash_multiset die wordt doorzocht.
Retourwaarde
Een iterator of const_iterator die de locatie van het eerste element in een hash_multiset adresseert met een sleutel die gelijk is aan of groter is dan de argumentsleutel, of die de locatie adresseert die het laatste element in de hash_multiset slaagt als er geen overeenkomst voor de sleutel wordt gevonden.
Voorbeeld
// hash_multiset_lower_bound.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main() {
using namespace std;
using namespace stdext;
hash_multiset <int> hms1;
hash_multiset <int> :: const_iterator hms1_AcIter, hms1_RcIter;
hms1.insert( 10 );
hms1.insert( 20 );
hms1.insert( 30 );
hms1_RcIter = hms1.lower_bound( 20 );
cout << "The element of hash_multiset hms1 with a key of 20 is: "
<< *hms1_RcIter << "." << endl;
hms1_RcIter = hms1.lower_bound( 40 );
// If no match is found for the key, end( ) is returned
if ( hms1_RcIter == hms1.end( ) )
cout << "The hash_multiset hms1 doesn't have an element "
<< "with a key of 40." << endl;
else
cout << "The element of hash_multiset hms1 with a key of 40 is: "
<< *hms1_RcIter << "." << endl;
// An element at a specific location in the hash_multiset can be found
// by using a dereferenced iterator that addresses the location
hms1_AcIter = hms1.end( );
hms1_AcIter--;
hms1_RcIter = hms1.lower_bound( *hms1_AcIter );
cout << "The element of hms1 with a key matching "
<< "that of the last element is: "
<< *hms1_RcIter << "." << endl;
}
hash_multiset::max_size
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert de maximumlengte van de hash_multiset.
size_type max_size() const;
Retourwaarde
De maximale lengte van de hash_multiset.
Voorbeeld
// hash_multiset_max_size.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1;
hash_multiset <int>::size_type i;
i = hms1.max_size( );
cout << "The maximum possible length "
<< "of the hash_multiset is " << i << "." << endl;
}
hash_multiset::operator=
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Vervangt de elementen van de hash_multiset door een kopie van een andere hash_multiset.
hash_multiset& operator=(const hash_multiset& right);
hash_multiset& operator=(hash_multiset&& right);
Parameterwaarden
rechts
De hash_multiset worden gekopieerd naar de hash_multiset.
Opmerkingen
Na het wissen van bestaande elementen in een hash_multiset, kopieert operator= of verplaatst u de inhoud van rechts naar de hash_multiset.
Voorbeeld
// hash_multiset_operator_as.cpp
// compile with: /EHsc
#include <hash_multiset>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset<int> v1, v2, v3;
hash_multiset<int>::iterator iter;
v1.insert(10);
cout << "v1 = " ;
for (iter = v1.begin(); iter != v1.end(); iter++)
cout << iter << " ";
cout << endl;
v2 = v1;
cout << "v2 = ";
for (iter = v2.begin(); iter != v2.end(); iter++)
cout << iter << " ";
cout << endl;
// move v1 into v2
v2.clear();
v2 = move(v1);
cout << "v2 = ";
for (iter = v2.begin(); iter != v2.end(); iter++)
cout << iter << " ";
cout << endl;
}
hash_multiset::p ointer
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een type dat een aanwijzer naar een element in een hash_multiset biedt.
typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::pointer pointer;
Opmerkingen
Een type pointer kan worden gebruikt om de waarde van een element te wijzigen.
In de meeste gevallen moet een iterator worden gebruikt om toegang te krijgen tot de elementen in een multiset-object.
hash_multiset::rbegin
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert een iterator die het eerste element in een omgekeerde hash_multiset adresseert.
const_reverse_iterator rbegin() const;
reverse_iterator rbegin();
Retourwaarde
Een omgekeerde bidirectionele iterator die het eerste element in een omgekeerde hash_multiset adresseren of het aanpakken van wat het laatste element in de niet-omgedraaide hash_multiset was geweest.
Opmerkingen
rbegin wordt gebruikt met een omgekeerde hash_multiset net zoals het begin wordt gebruikt met een hash_multiset.
Als de retourwaarde rbegin is toegewezen aan een const_reverse_iterator, kan het hash_multiset object niet worden gewijzigd. Als de retourwaarde rbegin is toegewezen aan een reverse_iterator, kan het hash_multiset object worden gewijzigd.
rbegin kan worden gebruikt om een hash_multiset achteruit te doorlopen.
Voorbeeld
// hash_multiset_rbegin.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1;
hash_multiset <int>::iterator hms1_Iter;
hash_multiset <int>::reverse_iterator hms1_rIter;
hms1.insert( 10 );
hms1.insert( 20 );
hms1.insert( 30 );
hms1_rIter = hms1.rbegin( );
cout << "The first element in the reversed hash_multiset is "
<< *hms1_rIter << "." << endl;
// begin can be used to start an iteration
// through a hash_multiset in a forward order
cout << "The hash_multiset is: ";
for ( hms1_Iter = hms1.begin( ) ; hms1_Iter != hms1.end( );
hms1_Iter++ )
cout << *hms1_Iter << " ";
cout << endl;
// rbegin can be used to start an iteration
// through a hash_multiset in a reverse order
cout << "The reversed hash_multiset is: ";
for ( hms1_rIter = hms1.rbegin( ) ; hms1_rIter != hms1.rend( );
hms1_rIter++ )
cout << *hms1_rIter << " ";
cout << endl;
// A hash_multiset element can be erased by dereferencing to its key
hms1_rIter = hms1.rbegin( );
hms1.erase ( *hms1_rIter );
hms1_rIter = hms1.rbegin( );
cout << "After the erasure, the first element "
<< "in the reversed hash_multiset is "<< *hms1_rIter << "."
<< endl;
}
The first element in the reversed hash_multiset is 30.
The hash_multiset is: 10 20 30
The reversed hash_multiset is: 30 20 10
After the erasure, the first element in the reversed hash_multiset is 20.
hash_multiset::reference
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een type dat een verwijzing biedt naar een element dat is opgeslagen in een hash_multiset.
typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::reference reference;
Voorbeeld
// hash_multiset_reference.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1;
hms1.insert( 10 );
hms1.insert( 20 );
// Declare and initialize a reference &Ref1 to the 1st element
int &Ref1 = *hms1.begin( );
cout << "The first element in the hash_multiset is "
<< Ref1 << "." << endl;
// The value of the 1st element of the hash_multiset can be
// changed by operating on its (non const) reference
Ref1 = Ref1 + 5;
cout << "The first element in the hash_multiset is now "
<< *hms1.begin() << "." << endl;
}
The first element in the hash_multiset is 10.
The first element in the hash_multiset is now 15.
hash_multiset::rend
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert een iterator waarmee de locatie wordt opgelost die het laatste element in een omgekeerde hash_multiset slaagt.
const_reverse_iterator rend() const;
reverse_iterator rend();
Retourwaarde
Een omgekeerde bidirectionele iterator die de locatie afhandelt die het laatste element in een omgekeerde hash_multiset (de locatie die voorafging aan het eerste element in de niet-omgedraaide hash_multiset).
Opmerkingen
rend wordt gebruikt met een omgekeerde hash_multiset net zoals het einde wordt gebruikt met een hash_multiset.
Als de retourwaarde rend is toegewezen aan een const_reverse_iterator, kan het hash_multiset object niet worden gewijzigd. Als de retourwaarde rend is toegewezen aan een reverse_iterator, kan het hash_multiset object worden gewijzigd. De waarde die wordt geretourneerd door rend mag niet worden afgetrokken.
rend kan worden gebruikt om te testen of een omgekeerde iterator het einde van de hash_multiset heeft bereikt.
Voorbeeld
// hash_multiset_rend.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1;
hash_multiset <int>::iterator hms1_Iter;
hash_multiset <int>::reverse_iterator hms1_rIter;
hash_multiset <int>::const_reverse_iterator hms1_crIter;
hms1.insert( 10 );
hms1.insert( 20 );
hms1.insert( 30 );
hms1_rIter = hms1.rend( );
hms1_rIter--;
cout << "The last element in the reversed hash_multiset is "
<< *hms1_rIter << "." << endl;
// end can be used to terminate an iteration
// through a hash_multiset in a forward order
cout << "The hash_multiset is: ";
for ( hms1_Iter = hms1.begin( ) ; hms1_Iter != hms1.end( );
hms1_Iter++ )
cout << *hms1_Iter << " ";
cout << "." << endl;
// rend can be used to terminate an iteration
// through a hash_multiset in a reverse order
cout << "The reversed hash_multiset is: ";
for ( hms1_rIter = hms1.rbegin( ) ; hms1_rIter != hms1.rend( );
hms1_rIter++ )
cout << *hms1_rIter << " ";
cout << "." << endl;
hms1_rIter = hms1.rend( );
hms1_rIter--;
hms1.erase ( *hms1_rIter );
hms1_rIter = hms1.rend( );
hms1_rIter--;
cout << "After the erasure, the last element in the "
<< "reversed hash_multiset is " << *hms1_rIter << "."
<< endl;
}
The last element in the reversed hash_multiset is 10.
The hash_multiset is: 10 20 30 .
The reversed hash_multiset is: 30 20 10 .
After the erasure, the last element in the reversed hash_multiset is 20.
hash_multiset::reverse_iterator
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een type dat een bidirectionele iterator biedt waarmee een element in een omgekeerde hash_multiset kan worden gelezen of gewijzigd.
typedef list<typename Traits::value_type, typename Traits::allocator_type>::reverse_iterator reverse_iterator;
Opmerkingen
Een type reverse_iterator wordt gebruikt om de hash_multiset omgekeerd te doorlopen.
Voorbeeld
Zie een voorbeeld voor rbegin voor een voorbeeld van hoe u declareert en gebruikt reverse_iterator.
hash_multiset::size
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert het aantal elementen in de hash_multiset.
size_type size() const;
Retourwaarde
De huidige lengte van de hash_multiset.
Voorbeeld
// hash_multiset_size.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1;
hash_multiset <int> :: size_type i;
hms1.insert( 1 );
i = hms1.size( );
cout << "The hash_multiset length is " << i << "." << endl;
hms1.insert( 2 );
i = hms1.size( );
cout << "The hash_multiset length is now " << i << "." << endl;
}
The hash_multiset length is 1.
The hash_multiset length is now 2.
hash_multiset::size_type
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een niet-ondertekend geheel getaltype dat het aantal elementen in een hash_multiset kan vertegenwoordigen.
typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::size_type size_type;
Voorbeeld
Zie een voorbeeld voor de grootte van een voorbeeld van het declareren en gebruiken van size_type
hash_multiset::wisselen
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
De elementen van twee hash_multisets uitwisselen.
void swap(hash_multiset& right);
Parameterwaarden
rechts
Het argument hash_multiset de elementen die moeten worden gewisseld met de doel-hash_multiset.
Opmerkingen
De lidfunctie ongeldig maakt geen verwijzingen, aanwijzers of iterators die elementen aanwijzen in de twee hash_multisets waarvan de elementen worden uitgewisseld.
Voorbeeld
// hash_multiset_swap.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1, hms2, hms3;
hash_multiset <int>::iterator hms1_Iter;
hms1.insert( 10 );
hms1.insert( 20 );
hms1.insert( 30 );
hms2.insert( 100 );
hms2.insert( 200 );
hms3.insert( 300 );
cout << "The original hash_multiset hms1 is:";
for ( hms1_Iter = hms1.begin( ); hms1_Iter != hms1.end( );
hms1_Iter++ )
cout << " " << *hms1_Iter;
cout << "." << endl;
// This is the member function version of swap
hms1.swap( hms2 );
cout << "After swapping with hms2, list hms1 is:";
for ( hms1_Iter = hms1.begin( ); hms1_Iter != hms1.end( );
hms1_Iter++ )
cout << " " << *hms1_Iter;
cout << "." << endl;
// This is the specialized template version of swap
swap( hms1, hms3 );
cout << "After swapping with hms3, list hms1 is:";
for ( hms1_Iter = hms1.begin( ); hms1_Iter != hms1.end( );
hms1_Iter++ )
cout << " " << *hms1_Iter;
cout << "." << endl;
}
The original hash_multiset hms1 is: 10 20 30.
After swapping with hms2, list hms1 is: 200 100.
After swapping with hms3, list hms1 is: 300.
hash_multiset::upper_bound
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Retourneert een iterator naar het eerste element in een hash_multiset met een sleutel die groter is dan een opgegeven sleutel.
const_iterator upper_bound(const Key& key) const;
iterator upper_bound(const Key& key);
Parameterwaarden
sleutel
De argumentsleutel die moet worden vergeleken met de sorteersleutel van een element uit de hash_multiset die wordt doorzocht.
Retourwaarde
Een iterator of const_iterator die de locatie van het eerste element in een hash_multiset adresseert met een sleutel die groter is dan de argumentsleutel, of die de locatie adresseert die het laatste element in de hash_multiset slaagt als er geen overeenkomst voor de sleutel wordt gevonden.
Voorbeeld
// hash_multiset_upper_bound.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1;
hash_multiset <int> :: const_iterator hms1_AcIter, hms1_RcIter;
hms1.insert( 10 );
hms1.insert( 20 );
hms1.insert( 30 );
hms1_RcIter = hms1.upper_bound( 20 );
cout << "The first element of hash_multiset hms1" << endl
<< "with a key greater than 20 is: "
<< *hms1_RcIter << "." << endl;
hms1_RcIter = hms1.upper_bound( 30 );
// If no match is found for the key, end( ) is returned
if ( hms1_RcIter == hms1.end( ) )
cout << "The hash_multiset hms1 doesn't have an element\n"
<< "with a key greater than 30." << endl;
else
cout << "The element of hash_multiset hms1"
<< "with a key > 40 is: "
<< *hms1_RcIter << "." << endl;
// An element at a specific location in the hash_multiset can be
// found by using a dereferenced iterator addressing the location
hms1_AcIter = hms1.begin( );
hms1_RcIter = hms1.upper_bound( *hms1_AcIter );
cout << "The first element of hms1 with a key greater than "
<< endl << "that of the initial element of hms1 is: "
<< *hms1_RcIter << "." << endl;
}
The first element of hash_multiset hms1
with a key greater than 20 is: 30.
The hash_multiset hms1 doesn't have an element
with a key greater than 30.
The first element of hms1 with a key greater than
that of the initial element of hms1 is: 20.
hash_multiset::value_comp
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Hiermee wordt een kopie opgehaald van het vergelijkingsobject dat wordt gebruikt om elementwaarden in een hash_multiset te ordenen.
value_compare value_comp() const;
Retourwaarde
Retourneert de hash_multiset sjabloonparameter Traits, die functieobjecten bevat die worden gebruikt om te hashen en elementen van de container te ordenen.
Zie het onderwerp hash_multiset Klas voor meer informatie over eigenschappen.
Opmerkingen
Het opgeslagen object definieert een lidfunctie:
bool-operator( constKey&_xVal, const Key&_yVal);
die retourneert true als _xVal deze voorafgaat en niet gelijk is aan _yVal in de sorteervolgorde.
Houd er rekening mee dat zowel key_compare alsvalue_comparesynoniemen zijn voor de sjabloonparameterEigenschappen. Beide typen worden geleverd voor de hash_multiset- en hash_multiset-klassen, waar ze identiek zijn, voor compatibiliteit met de hash_map- en hash_multimap-klassen, waar ze verschillend zijn.
Voorbeeld
// hash_multiset_value_comp.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int, hash_compare < int, less<int> > > hms1;
hash_multiset <int, hash_compare < int, less<int> > >::value_compare
vc1 = hms1.value_comp( );
bool result1 = vc1( 2, 3 );
if( result1 == true )
{
cout << "vc1( 2,3 ) returns value of true, "
<< "where vc1 is the function object of hms1."
<< endl;
}
else
{
cout << "vc1( 2,3 ) returns value of false, "
<< "where vc1 is the function object of hms1."
<< endl;
}
hash_multiset <int, hash_compare < int, greater<int> > > hms2;
hash_multiset<int, hash_compare < int, greater<int> > >::
value_compare vc2 = hms2.value_comp( );
bool result2 = vc2( 2, 3 );
if( result2 == true )
{
cout << "vc2( 2,3 ) returns value of true, "
<< "where vc2 is the function object of hms2."
<< endl;
}
else
{
cout << "vc2( 2,3 ) returns value of false, "
<< "where vc2 is the function object of hms2."
<< endl;
}
}
vc1( 2,3 ) returns value of true, where vc1 is the function object of hms1.
vc2( 2,3 ) returns value of false, where vc2 is the function object of hms2.
hash_multiset::value_compare
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een type dat twee functieobjecten biedt, een binair predicaat van klassevergelijking waarmee twee elementwaarden van een hash_multiset kunnen worden vergeleken om hun relatieve volgorde te bepalen en een unaire predicaat dat de elementen hashes.
typedef key_compare value_compare;
Opmerkingen
value_compare is een synoniem voor de sjabloonparameter Traits.
Zie het onderwerp hash_multiset Klas voor meer informatie over eigenschappen.
Houd er rekening mee dat zowel key_compare als value_comparesynoniemen zijn voor de sjabloonparameterEigenschappen. Beide typen worden geleverd voor de klassenset en multiset, waar ze identiek zijn, voor compatibiliteit met de klassentoewijzing en multimap, waar ze verschillend zijn.
Voorbeeld
Zie een voorbeeld voor value_comp voor een voorbeeld van het declareren en gebruiken value_comparevan .
hash_multiset::value_type
Opmerking
Deze API is verouderd. Het alternatief is unordered_multiset Klasse.
Een type dat een object beschrijft dat is opgeslagen als een element als een hash_multiset in de capaciteit als een waarde.
typedef Key value_type;
Voorbeeld
// hash_multiset_value_type.cpp
// compile with: /EHsc
#include <hash_set>
#include <iostream>
int main( )
{
using namespace std;
using namespace stdext;
hash_multiset <int> hms1;
hash_multiset <int>::iterator hms1_Iter;
// Declare value_type
hash_multiset <int> :: value_type hmsvt_Int;
hmsvt_Int = 10; // Initialize value_type
// Declare key_type
hash_multiset <int> :: key_type hmskt_Int;
hmskt_Int = 20; // Initialize key_type
hms1.insert( hmsvt_Int ); // Insert value into s1
hms1.insert( hmskt_Int ); // Insert key into s1
// A hash_multiset accepts key_types or value_types as elements
cout << "The hash_multiset has elements:";
for ( hms1_Iter = hms1.begin() ; hms1_Iter != hms1.end( );
hms1_Iter++)
cout << " " << *hms1_Iter;
cout << "." << endl;
}
The hash_multiset has elements: 10 20.
Zie ook
Thread Safety in de standaardbibliotheek van C++
Naslaginformatie over de C++ standaard bibliotheek