hash_multiset — Klasa
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Klasa kontenera hash_multiset jest rozszerzeniem standardowej biblioteki C++ i jest używana do przechowywania i szybkiego pobierania danych z kolekcji, w której wartości zawartych elementów służą jako wartości kluczy i nie są wymagane do unikatowości.
Składnia
template <class Key, class Traits =hash_compare<Key, less <Key>>, class Allocator =allocator <Key>>
class hash_multiset
Parametry
Klawisz
Typ danych elementu, który ma być przechowywany w hash_multiset.
Cechy
Typ, który zawiera dwa obiekty funkcji, jeden z porównań klas, który jest predykatem binarnym w stanie porównać dwie wartości elementu jako klucze sortowania w celu określenia ich względnej kolejności i funkcji skrótu, która jest jednoargumentowym mapowaniem kluczowych wartości kluczy elementów na niepodpisane liczby całkowite typu size_t
. Ten argument jest opcjonalny i hash_compare<Key, less<Key> >
jest wartością domyślną.
Programu przydzielania
Typ reprezentujący przechowywany obiekt alokatora, który hermetyzuje szczegóły dotyczące alokacji hash_multiset i cofnięcia alokacji pamięci. Ten argument jest opcjonalny, a wartość domyślna to allocator<Key>
.
Uwagi
Hash_multiset to:
Kontenerem asocjacyjnym, który jest kontenerem o zmiennym rozmiarze, obsługującym efektywne pobieranie wartości elementu w oparciu o wartość skojarzonego klucza. Ponadto, jest prostym kontenerem asocjacyjnym, ponieważ jego wartości elementu są jego wartościami klucza.
Odwracalny, ponieważ zapewnia dwukierunkowy iterator do dostępu do jego elementów.
Skrót, ponieważ jego elementy są pogrupowane w zasobniki na podstawie wartości funkcji skrótu zastosowanej do kluczowych wartości elementów.
Unikatowy w tym sensie, że każdy z jego elementów musi mieć unikatowy klucz. Ponieważ hash_multiset jest również prostym kontenerem asocjacyjnym, jego elementy są również unikatowe.
Szablon klasy, ponieważ funkcje, które udostępnia, są ogólne i tak niezależne od określonego typu danych zawartych jako elementy lub klucze. Typy danych, których można użyć dla elementów i kluczy, są zamiast tego określane jako parametry w szablonie klasy, wraz z funkcją porównania oraz alokatorem.
Główną zaletą tworzenia skrótów w sortowaniu jest większa wydajność: pomyślne tworzenie skrótów wykonuje wstawiania, usuwania i znajduje się w stałym średnim czasie w porównaniu z czasem proporcjonalnym do logarytmu liczby elementów w kontenerze na potrzeby technik sortowania. Nie można bezpośrednio zmienić wartości elementu w zestawie. Zamiast tego musisz usunąć stare wartości i wstawić elementy z nowymi wartościami.
Wybór typu kontenera powinien ogólnie być oparty o typ wyszukiwania i wstawiania wymagany przez aplikację. Skróty kontenerów asocjacyjnych są zoptymalizowane pod kątem operacji wyszukiwania, wstawiania i usuwania. Funkcje składowe, które jawnie obsługują te operacje, są wydajne w przypadku użycia z dobrze zaprojektowaną funkcją skrótu, wykonując je w czasie, który jest średnio stały i nie zależy od liczby elementów w kontenerze. Dobrze zaprojektowana funkcja skrótu tworzy jednolity rozkład wartości skrótów i minimalizuje liczbę kolizji, gdzie mówi się, że kolizja występuje, gdy różne wartości klucza są mapowane na tę samą wartość skrótu. W najgorszym przypadku z najgorszą możliwą funkcją skrótu liczba operacji jest proporcjonalna do liczby elementów w sekwencji (czas liniowy).
Hash_multiset powinien być wybranym kontenerem asocjacyjnym, gdy warunki kojarzenia wartości z kluczami są spełnione przez aplikację. Elementy hash_multiset mogą być wielokrotne i służyć jako własne klucze sortowania, więc klucze nie są unikatowe. Model dla tego typu konstrukcji jest uporządkowaną listą, np. wyrazów, w których wyrazy mogą występować więcej niż jeden raz. Gdyby wiele wystąpień wyrazów nie było dozwolone, wówczas hash_set byłaby odpowiednią strukturą kontenera. Gdyby unikatowe definicje zostały dołączone jako wartości do listy unikatowych słów kluczowych, hash_map byłaby odpowiednią strukturą zawierającą te dane. Jeśli zamiast tego definicje nie były unikatowe, hash_multimap byłby wybranym kontenerem.
Hash_multiset porządkuje sekwencję, którą kontroluje, wywołując przechowywany obiekt cech skrótu typu value_compare. Dostęp do tego przechowywanego obiektu można uzyskać, wywołując funkcję składową key_comp. Taki obiekt funkcji musi zachowywać się tak samo jak obiekt klasy hash_compare<Key, less<Key> >
. W szczególności dla wszystkich wartości Klucz typu wywołanie Trait(Key)
daje rozkład wartości typu size_t
.Key
Ogólnie rzecz biorąc, elementy muszą być nieco mniej porównywalne, aby ustalić kolejność: tak aby, mając dowolne dwa elementy, można było określić, czy są one równoważne (w sensie, żaden nie jest mniejszy niż ten drugi) lub, że jeden jest mniejszy niż ten drugi. Skutkuje to ustaleniem kolejności dla elementów nierównoważnych. Ze strony bardziej technicznej, funkcja porównywania jest predykatem binarnym, który wymusza ścisłe słabe porządkowanie w standardowym sensie matematycznym. Predykat binarny f( x, y) jest obiektem funkcji, który ma dwa obiekty argumentów x i y oraz zwracaną wartość true lub false. Kolejność nałożona na hash_multiset to ścisłe słabe porządkowanie, jeśli predykat binarny jest nieelastycznym, antysymetrycznym i przechodnim, a jeśli równoważność jest przechodnia, gdzie dwa obiekty x i y są definiowane jako równoważne, gdy oba obiekty f( x, y) i f( y, x) są fałszywe. Jeśli silniejszy warunek równości pomiędzy kluczami zastąpi ten równoważności, to porządkowanie będzie całkowite (w sensie, że wszystkie elementy są uporządkowane względem siebie), a dopasowane klucze będą od siebie nieodróżnialne.
Rzeczywista kolejność elementów w kontrolowanej sekwencji zależy od funkcji skrótu, funkcji porządkowania i bieżącego rozmiaru tabeli skrótów przechowywanej w obiekcie kontenera. Nie można określić bieżącego rozmiaru tabeli skrótów, więc nie można ogólnie przewidzieć kolejności elementów w kontrolowanej sekwencji. Wstawianie elementów nie unieważnia iteratorów, a usuwanie elementów unieważnia tylko te iteratory, które w szczególności wskazywały na usunięte elementy.
Iterator dostarczony przez klasę hash_multiset jest iteratorem dwukierunkowym, ale funkcje składowe klasy wstawiają i hash_multiset mają wersje, które przyjmują jako parametry szablonu słabszy iterator wejściowy, którego wymagania dotyczące funkcjonalności są bardziej minimalne niż te gwarantowane przez klasę iteratorów dwukierunkowych. Pojęcia innych iteratorów formują rodzinę powiązaną przez udoskonalenia w ich funkcjonalnościach. Każda koncepcja iteratora ma własne hash_multiset wymagań, a algorytmy, które z nimi współpracują, muszą ograniczyć swoje założenia do wymagań dostarczonych przez ten typ iteratora. Można założyć, że z iteratora danych wejściowych można usunąć odwołanie, aby odwołać się do obiektu, a także, że może on być zwiększony do następnego iteratora w sekwencji. Jest to minimalna hash_multiset funkcjonalności, ale wystarczy, aby móc mówić znacząco o zakresie iteratorów [ first
, last
) w kontekście funkcji składowych klasy.
Konstruktory
Konstruktor | opis |
---|---|
hash_multiset | Tworzy element, który hash_multiset jest pusty lub jest kopią wszystkich lub części innych hash_multiset elementów . |
Typedefs
Nazwa typu | opis |
---|---|
allocator_type | Typ reprezentujący klasę allocator hash_multiset dla obiektu. |
const_iterator | Typ, który udostępnia iterator dwukierunkowy, który może odczytać const element w obiekcie hash_multiset . |
const_pointer | Typ, który dostarcza wskaźnik do const elementu w obiekcie hash_multiset . |
const_reference | Typ, który zawiera odwołanie do elementu przechowywanego const w hash_multiset obiekcie do odczytu i wykonywania const operacji. |
const_reverse_iterator | Typ, który udostępnia iterator dwukierunkowy, który może odczytywać dowolny const element w obiekcie hash_multiset . |
difference_type | Typ liczby całkowitej ze znakiem, który zapewnia różnicę między dwoma iteratorami, które adresuje elementy w ramach tego samego hash_multiset elementu . |
Sterująca | Typ, który udostępnia iterator dwukierunkowy, który może odczytywać lub modyfikować dowolny element w obiekcie hash_multiset . |
key_compare | Typ, który udostępnia obiekt funkcji, który może porównać dwa klucze sortowania, aby określić względną kolejność dwóch elementów w obiekcie hash_multiset . |
key_type | Typ, który opisuje obiekt przechowywany jako element hash_set w jego pojemności jako klucz sortowania. |
wskaźnik | Typ, który dostarcza wskaźnik do elementu w elemecie hash_multiset . |
odniesienie | Typ, który zawiera odwołanie do elementu przechowywanego w obiekcie hash_multiset . |
reverse_iterator | Typ, który udostępnia iterator dwukierunkowy, który może odczytywać lub modyfikować element w odwróconym hash_multiset obiekcie . |
size_type | Niepodpisany typ liczb całkowitych, który może reprezentować liczbę elementów w obiekcie hash_multiset . |
value_compare | Typ, który udostępnia dwa obiekty funkcji, binarny predykat klasy porównywania, który może porównać dwie wartości elementów elementu w hash_multiset celu określenia ich względnej kolejności i jednoargumentowego predykatu, który skróty elementów. |
value_type | Typ, który opisuje obiekt przechowywany jako element hash_multiset w jego pojemności jako wartość. |
Funkcje składowe
Funkcja składowa | opis |
---|---|
zaczynać | Zwraca iterator, który adresuje pierwszy element w obiekcie hash_multiset . |
cbegin | Zwraca iterator const odnoszący się do pierwszego elementu w obiekcie hash_multiset . |
cend | Zwraca iterator const, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w elemecie hash_multiset . |
jasny | Usuwa wszystkie elementy elementu hash_multiset . |
count | Zwraca liczbę elementów w kluczu hash_multiset , których klucz pasuje do klucza określonego przez parametr |
crbegin | Zwraca iterator const odnoszący się do pierwszego elementu w odwróconym hash_multiset obiekcie . |
crend | Zwraca iterator const, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w odwróconym elemecie hash_multiset . |
miejsce | Wstawia element skonstruowany w miejscu do elementu hash_multiset . |
emplace_hint | Wstawia element skonstruowany w miejscu do hash_multiset elementu z wskazówką umieszczania. |
empty | Sprawdza, czy element hash_multiset jest pusty. |
koniec | Zwraca iterator, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w elemecie hash_multiset . |
equal_range | Zwraca parę iteratorów odpowiednio do pierwszego elementu w hash_multiset obiekcie z kluczem większym niż określony klucz i do pierwszego elementu w hash_multiset obiekcie z kluczem równym lub większym niż klucz. |
wymazać | Usuwa element lub zakres elementów z hash_multiset określonych pozycji lub usuwa elementy zgodne z określonym kluczem. |
find | Zwraca iterator odnoszący się do lokalizacji elementu w obiekcie hash_multiset , który ma klucz odpowiadający określonemu kluczowi. |
get_allocator | Zwraca kopię obiektu używanego allocator do konstruowania obiektu hash_multiset . |
wstawiać | Wstawia element lub zakres elementów do elementu hash_multiset . |
key_comp | Pobiera kopię obiektu porównania używanego do zamawiania kluczy w obiekcie hash_multiset . |
lower_bound | Zwraca iterator do pierwszego elementu w obiekcie hash_multiset z kluczem równym lub większym niż określony klucz. |
max_size | Zwraca maksymalną długość obiektu hash_multiset . |
rbegin | Zwraca iterator odnoszący się do pierwszego elementu w odwróconym hash_multiset obiekcie . |
drzeć | Zwraca iterator, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w odwróconym elemecie hash_multiset . |
rozmiar | Zwraca liczbę elementów w elem.hash_multiset |
zamiana | Wymienia elementy dwóch hash_multiset s. |
upper_bound | Zwraca iterator do pierwszego elementu w obiekcie hash_multiset z kluczem równym lub większym niż określony klucz. |
value_comp | Pobiera kopię obiektu cech skrótu używanego do określania wartości klucza elementu skrótu i porządkowanie ich w obiekcie hash_multiset . |
Operatory
Operator | opis |
---|---|
hash_multiset::operator= | Zastępuje elementy hash_multiset kopią innego hash_multiset. |
Wymagania
Nagłówek:<hash_set>
Przestrzeń nazw: stdext
hash_multiset::allocator_type
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Typ reprezentujący klasę alokatora dla obiektu hash_multiset.
typedef list<typename Traits::value_type, typename Traits::allocator_type>::allocator_type allocator_type;
Przykład
Zobacz przykład get_allocator, aby zapoznać się z przykładem użyciaallocator_type
hash_multiset::begin
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca iterator, który adresuje pierwszy element w hash_multiset.
const_iterator begin() const;
iterator begin();
Wartość zwracana
Iterator dwukierunkowy odnoszący się do pierwszego elementu w hash_multiset lub lokalizacji, która zakończyła się powodzeniem pustej hash_multiset.
Uwagi
Jeśli zwracana wartość begin
elementu jest przypisana do const_iterator
obiektu , nie można modyfikować elementów w obiekcie hash_multiset. Jeśli wartość zwracana begin
elementu jest przypisana do iterator
obiektu , elementy w obiekcie hash_multiset można modyfikować.
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca iterator const, który adresuje pierwszy element w hash_multiset.
const_iterator cbegin() const;
Wartość zwracana
Iterator dwukierunkowy odnoszący się do pierwszego elementu w hash_multiset lub lokalizacji, która zakończyła się powodzeniem pustego hash_multiset
elementu .
Uwagi
Przy zwracanej wartości cbegin
elementu nie można modyfikować elementów w hash_multiset
obiekcie.
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca iterator const, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w hash_multiset.
const_iterator cend() const;
Wartość zwracana
Iterator dwukierunkowy, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w hash_multiset. Jeśli wartość jest pusta hash_multiset
, to hash_multiset::cend == hash_multiset::begin
.
Uwagi
cend
służy do testowania, czy iterator osiągnął koniec jego hash_multiset
. Wartość zwracana przez cend
nie powinna być wyłuszczone.
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Usuwa wszystkie elementy hash_multiset.
void clear();
Uwagi
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Typ, który udostępnia iterator dwukierunkowy, który może odczytać const
element w hash_multiset.
typedef list<typename Traits::value_type, typename Traits::allocator_type>::const_iterator const_iterator;
Uwagi
Nie można użyć typu const_iterator
do modyfikowania wartości elementu.
Przykład
Zobacz przykład, aby zapoznać się z przykładem przy użyciu polecenia const_iterator
.
hash_multiset::const_pointer
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Typ, który dostarcza wskaźnik do const
elementu w hash_multiset.
typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::const_pointer const_pointer;
Uwagi
Nie można użyć typu const_pointer
do modyfikowania wartości elementu.
W większości przypadków const_iterator należy użyć do uzyskiwania dostępu do elementów w const
obiekcie hash_multiset.
hash_multiset::const_reference
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Typ, który zawiera odwołanie do elementu przechowywanego const
w hash_multiset do odczytywania i wykonywania const
operacji.
typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::const_reference const_reference;
Uwagi
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Typ, który udostępnia iterator dwukierunkowy, który może odczytywać dowolny const
element w hash_multiset.
typedef list<typename Traits::value_type, typename Traits::allocator_type>::const_reverse_iterator const_reverse_iterator;
Uwagi
Typ const_reverse_iterator
nie może zmodyfikować wartości elementu i jest używany do iterowania przez hash_multiset odwrotnie.
Przykład
Zobacz przykład nazwy rend, aby zapoznać się z przykładem sposobu deklarowania i używania elementu const_reverse_iterator
.
hash_multiset::count
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca liczbę elementów w hash_multiset, których klucz pasuje do klucza określonego parametrem.
size_type count(const Key& key) const;
Parametry
key
Klucz elementów do dopasowania z hash_multiset.
Wartość zwracana
Liczba elementów w hash_multiset z określonym parametrem klucza.
Uwagi
Funkcja składowa zwraca liczbę elementów w następującym zakresie:
[ lower_bound(klucz), upper_bound(klucz) ).
Przykład
W poniższym przykładzie pokazano użycie funkcji składowej hash_multiset::count.
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca iterator const odnoszący się do pierwszego elementu w odwróconej hash_multiset.
const_reverse_iterator crbegin() const;
Wartość zwracana
Odwrotny iterator dwukierunkowy odnoszący się do pierwszego elementu w odwróconej hash_multiset lub zwracając się do tego, co było ostatnim elementem w niewróceniu hash_multiset
.
Uwagi
crbegin
jest używany z odwróconym elementem hash_multiset
tak samo jak hash_multiset::begin jest używany z elementem hash_multiset
.
Przy użyciu wartości zwracanej crbegin
hash_multiset
obiektu nie można modyfikować.
crbegin
może służyć do iterowania przez hash_multiset
tyły.
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca iterator const, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w odwróconej hash_multiset.
const_reverse_iterator crend() const;
Wartość zwracana
Odwrotny iterator dwukierunkowy, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w odwróconej hash_multiset (lokalizacja, która poprzedzała pierwszy element w niewzróconym hash_multiset
elemeducie ).
Uwagi
crend
jest używany z odwróconym elementem hash_multiset
tak samo jak hash_multiset::end jest używany z elementem hash_multiset
.
Przy użyciu wartości zwracanej crend
hash_multiset
obiektu nie można modyfikować.
crend
umożliwia sprawdzenie, czy iterator odwrotny osiągnął koniec hash_multiset.
Przykład
// 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 ifference_type
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Typ liczby całkowitej ze znakiem, który zapewnia różnicę między dwoma iteratorami, które adresuje elementy w ramach tej samej hash_multiset.
typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::difference_type difference_type;
Uwagi
Jest difference_type
to typ zwracany podczas odejmowania lub przyrostowania przez iteratory kontenera. Element difference_type
jest zwykle używany do reprezentowania liczby elementów w zakresie [ first
, last
) między iteratorami first
i last
, zawiera element wskazywany przez first
i zakres elementów do, ale nie uwzględnia, element wskazywany przez last
.
Należy pamiętać, że chociaż difference_type
jest dostępny dla wszystkich iteratorów spełniających wymagania iteratora wejściowego, który obejmuje klasę iteratorów dwukierunkowych obsługiwanych przez kontenery odwracalne, takie jak zestaw. Odejmowanie między iteratorami jest obsługiwane tylko przez iteratory dostępu losowego udostępniane przez kontener dostępu losowego, taki jak wektor lub deque.
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Wstawia element skonstruowany w miejscu do hash_multiset.
template <class ValTy>
iterator insert(ValTy&& val);
Parametry
Val
Wartość elementu, który ma zostać wstawiony do hash_multiset , chyba że hash_multiset
element zawiera już ten element lub, ogólniej, element, którego klucz jest równoważnie uporządkowany.
Wartość zwracana
Funkcja emplace
składowa zwraca iterator wskazujący położenie, w którym wstawiono nowy element.
Uwagi
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Wstawia element skonstruowany na miejscu do hash_multiset z wskazówką umieszczania.
template <class ValTy>
iterator insert(
const_iterator where,
ValTy&& val);
Parametry
Val
Wartość elementu, który ma zostać wstawiony do hash_multiset , chyba że hash_multiset
element zawiera już ten element lub, ogólniej, element, którego klucz jest równoważnie uporządkowany.
gdzie
Miejsce, w którym należy rozpocząć wyszukiwanie poprawnego punktu wstawiania. (Wstawienie może wystąpić w amortyzowanym stałym czasie, a nie w czasie logarytmicznych, jeśli punkt wstawiania następuje natychmiast po miejscu).
Wartość zwracana
Funkcja składowa hash_multiset::emplace zwraca iterator wskazujący położenie, w którym nowy element został wstawiony do hash_multiset
elementu .
Uwagi
Wstawienie może wystąpić w amortyzowanym stałym czasie, a nie w czasie logarytmicznych, jeśli punkt wstawiania natychmiast następuje po miejscu.
Przykład
// 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::empty
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Sprawdza, czy hash_multiset jest pusta.
bool empty() const;
Wartość zwracana
true
jeśli hash_multiset jest pusta; false
jeśli hash_multiset jest brak.
Uwagi
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca iterator, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w hash_multiset.
const_iterator end() const;
iterator end();
Wartość zwracana
Iterator dwukierunkowy, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w hash_multiset. Jeśli hash_multiset jest pusta, hash_multiset::end == hash_multiset::begin.
Uwagi
end
służy do testowania, czy iterator osiągnął koniec hash_multiset. Wartość zwracana przez end
nie powinna być wyłuszczone.
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca parę iteratorów odpowiednio do pierwszego elementu w hash_multiset z kluczem większym niż określony klucz i do pierwszego elementu w hash_multiset z kluczem równym lub większym niż klucz.
pair <const_iterator, const_iterator> equal_range (const Key& key) const;
pair <iterator, iterator> equal_range (const Key& key);
Parametry
key
Klucz argumentu do porównania z kluczem sortowania elementu z przeszukiwanego hash_multiset.
Wartość zwracana
Para iteratorów, gdzie pierwszy to lower_bound klucza, a drugi to upper_bound klucza.
Aby uzyskać dostęp do pierwszego iteratora pary pr
zwróconej przez funkcję składową, użyj polecenia pr
. najpierw i wyłuszczyć iterator dolnej granicy, użyj *( pr
. pierwszy). Aby uzyskać dostęp do drugiego iteratora pary pr
zwróconej przez funkcję składową, użyj polecenia pr
. drugi i aby wyłuskać iterator górnej granicy, użyj *( pr
. sekunda).
Przykład
// 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::erase
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Usuwa element lub zakres elementów w hash_multiset z określonych pozycji lub usuwa elementy zgodne z określonym kluczem.
iterator erase(iterator where);
iterator erase(iterator first, iterator last);
size_type erase(const key_type& key);
Parametry
gdzie
Położenie elementu do usunięcia z hash_multiset.
pierwszy
Pozycja pierwszego elementu usuniętego z hash_multiset.
ostatni
Pozycja tuż poza ostatnim elementem usuniętym z hash_multiset.
key
Klucz elementów do usunięcia z hash_multiset.
Wartość zwracana
W przypadku pierwszych dwóch funkcji składowych iterator dwukierunkowy, który wyznacza pierwszy element pozostały poza usuniętymi elementami lub wskaźnik na końcu hash_multiset, jeśli taki element nie istnieje. W przypadku trzeciej funkcji składowej liczba elementów, które zostały usunięte z hash_multiset.
Uwagi
Funkcje składowe nigdy nie zgłaszają wyjątku.
Przykład
W poniższym przykładzie pokazano użycie funkcji składowej hash_multiset::erase.
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca iterator odnoszący się do lokalizacji elementu w hash_multiset, który ma klucz odpowiadający określonemu kluczowi.
iterator find(const Key& key);
const_iterator find(const Key& key) const;
Parametry
key
Klucz argumentu, który ma być dopasowany przez klucz sortowania elementu z przeszukiwanego hash_multiset.
Wartość zwracana
Iterator lub const_iterator adresujący lokalizację elementu równoważnego określonemu kluczowi lub adresujący lokalizację, która zakończyła się powodzeniem ostatniego elementu w hash_multiset, jeśli nie zostanie znalezione dopasowanie klucza.
Uwagi
Funkcja składowa zwraca iterator, który adresuje element w hash_multiset, którego kluczem sortowania jest equivalent
klucz argumentu w predykacie binarnym, który wywołuje kolejność na podstawie relacji mniejszej niż porównywalność.
Jeśli zwracana wartość find
elementu jest przypisana do const_iterator
obiektu , nie można zmodyfikować obiektu hash_multiset. Jeśli wartość zwracana find
elementu jest przypisana do iterator
obiektu , można zmodyfikować obiekt hash_multiset.
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca kopię obiektu alokatora używanego do konstruowania hash_multiset.
Allocator get_allocator() const;
Wartość zwracana
Alokator używany przez hash_multiset do zarządzania pamięcią, czyli parametrem Allocator
szablonu klasy .
Aby uzyskać więcej informacji na temat Allocator
programu , zobacz sekcję Uwagi w temacie hash_multiset Class (Klasa hash_multiset).
Uwagi
Alokatory dla klasy hash_multiset określają sposób zarządzania magazynem przez klasę. Domyślne alokatory dostarczane z klasami kontenerów biblioteki standardowej języka C++ są wystarczające dla większości potrzeb programistycznych. Pisanie i używanie własnej klasy alokatora jest zaawansowanym tematem języka C++.
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Tworzy element, który hash_multiset
jest pusty lub jest kopią wszystkich lub części innych hash_multiset
elementów .
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<Tu[e> 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);
Parametry
Al
Klasa alokatora magazynu, która ma być używana dla tego hash_multiset
obiektu, który domyślnie ma wartość Allocator
.
Komp
Funkcja porównania typu const Traits
używana do porządkowenia elementów w hash_multiset
obiekcie , która jest domyślnie ustawiona na hash_compare
.
Right
Element hash_multiset
, którego konstrukcja hash_multiset
ma być kopią.
pierwszy
Położenie pierwszego elementu w zakresie elementów do skopiowania.
ostatni
Położenie pierwszego elementu poza zakresem elementów do skopiowania.
IList
Initializer_list, który zawiera elementy do skopiowania.
Uwagi
Wszystkie konstruktory przechowują typ obiektu alokatora, który zarządza magazynem pamięci dla hash_multiset
obiektu i które można później zwrócić przez wywołanie hash_multiset::get_allocator. Parametr alokatora jest często pomijany w deklaracjach klas i makrach przetwarzania wstępnego używanych do zastępowania alternatywnych alokatorów.
Wszystkie konstruktory inicjują swoje hash_multisets.
Wszystkie konstruktory przechowują obiekt funkcji typu Traits
, który jest używany do ustanowienia kolejności między kluczami elementu hash_multiset
i które można później zwrócić przez wywołanie hash_multiset::key_comp. Aby uzyskać więcej informacji, Traits
zobacz temat Klasa hash_multiset.
Pierwsze trzy konstruktory określają pusty początkowy , hash_multiset
drugi określający typ funkcji porównania (Comp) do użycia w ustaleniu kolejności elementów, a trzeci jawnie określając typ alokatora (Al) do użycia. Słowo kluczowe explicit
pomija niektóre rodzaje automatycznej konwersji typów.
Czwarty konstruktor przenosi element hash_multiset
Right
.
Piąte, szóste i siódme konstruktory używają initializer_list.
Ostatnie trzy konstruktory kopiują zakres [ first
, last
) hash_multiset
obiektu z rosnącą jawnością określającą typ funkcji porównania klasy Compare i alokator.
Rzeczywista kolejność elementów w kontenerze zestawu skrótów zależy od funkcji wyznaczania wartości skrótu, funkcji porządkowania i bieżącego rozmiaru tabeli skrótów, a ogólnie nie można przewidzieć, jak to możliwe w przypadku kontenera zestawu, gdzie został on określony przez funkcję porządkowania.
hash_multiset::insert
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Wstawia element lub zakres elementów do hash_multiset.
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);
Parametry
wartość
Wartość elementu, który ma zostać wstawiony do hash_multiset, chyba że hash_multiset zawiera już ten element lub, ogólniej, element, którego klucz jest równoważnie uporządkowany.
gdzie
Miejsce, w którym należy rozpocząć wyszukiwanie poprawnego punktu wstawiania. (Wstawienie może wystąpić w amortyzowanym stałym czasie, a nie w czasie logarytmicznych, jeśli punkt wstawiania następuje natychmiast po miejscu).
pierwszy
Pozycja pierwszego elementu do skopiowania z hash_multiset.
ostatni
Pozycja tuż poza ostatnim elementem, który ma zostać skopiowany z hash_multiset.
IList
Initializer_list zawierający elementy do skopiowania.
Wartość zwracana
Pierwsze dwie funkcje składowe wstawiania zwracają iterator wskazujący położenie, w którym wstawiono nowy element.
Następne trzy funkcje członkowskie używają initializer_list.
Trzecia funkcja składowa wstawia sekwencję wartości elementów do hash_multiset odpowiadającym każdemu elementowi adresowanemu przez iterator w zakresie [ first
, last
) określonego hash_multiset.
Uwagi
Wstawienie może wystąpić w amortyzowanym stałym czasie dla wersji wstawiania wskazówek, zamiast czasu logarytmicznych, jeśli punkt wstawiania natychmiast następuje po miejscu.
hash_multiset::iterator
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Typ, który udostępnia iterator dwukierunkowy, który może odczytywać lub modyfikować dowolny element w hash_multiset.
typedef list<typename Traits::value_type, typename Traits::allocator_type>::iterator iterator;
Uwagi
iterator
Typ może służyć do modyfikowania wartości elementu.
Przykład
Zobacz przykład, aby zapoznać się z przykładem sposobu deklarowania i używania elementu iterator
.
hash_multiset::key_comp
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Pobiera kopię obiektu porównania używanego do zamawiania kluczy w hash_multiset.
key_compare key_comp() const;
Wartość zwracana
Zwraca hash_multiset parametr szablonu Traits, który zawiera obiekty funkcji używane do wyznaczania wartości skrótu i porządkować elementy kontenera.
Aby uzyskać więcej informacji na temat cech , zobacz temat Klasa hash_multiset.
Uwagi
Przechowywany obiekt definiuje funkcję składową:
bool operator<(const Key& _xVal, const Key& _yVal);
wartość , która zwraca wartość true
, jeśli _xVal
jest poprzednia i nie jest równa _yVal
w kolejności sortowania.
Należy pamiętać, że zarówno key_compare, jak i value_compare są synonimami cech parametru szablonu. Oba typy są udostępniane dla klas hash_multiset i hash_multiset, w których są identyczne, w celu zachowania zgodności z klasami hash_map i hash_multimap, gdzie są one odrębne.
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Typ, który udostępnia dwa obiekty funkcji, binarny predykat klasy porównywania, który może porównać dwie wartości elementów hash_multiset w celu określenia ich względnej kolejności i jednoargumentowego predykatu, który skróty elementów.
typedef Traits key_compare;
Uwagi
key_compare
jest synonimem cech parametru szablonu.
Aby uzyskać więcej informacji na temat cech , zobacz temat Klasa hash_multiset.
Należy pamiętać, że zarównokey_compare
, jak i value_compare są synonimami cech parametru szablonu. Oba typy są udostępniane dla klas hash_set i hash_multiset, w których są identyczne, w celu zachowania zgodności z klasami hash_map i hash_multimap, gdzie są one odrębne.
Przykład
Zobacz przykład key_comp, aby zapoznać się z przykładem sposobu deklarowania i używania elementu key_compare
.
hash_multiset::key_type
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Typ, który udostępnia obiekt funkcji, który może porównać klucze sortowania w celu określenia względnej kolejności dwóch elementów w hash_multiset.
typedef Key key_type;
Uwagi
key_type
jest synonimem klucza parametru szablonu.
Należy pamiętać, że zarównokey_type
, jak i value_type są synonimami klucza parametru szablonu. Oba typy są udostępniane dla klas zestawów i wielu zestawów, w których są identyczne, w celu zachowania zgodności z klasami mapy i multimap, gdzie są one odrębne.
Aby uzyskać więcej informacji na temat klucza, zobacz sekcję Uwagi w temacie hash_multiset Class (Klasa hash_multiset).
Przykład
Zobacz przykład value_type, aby zapoznać się z przykładem sposobu deklarowania i używania elementu key_type
.
hash_multiset::lower_bound
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca iterator do pierwszego elementu w hash_multiset z kluczem równym lub większym niż określony klucz.
const_iterator lower_bound(const Key& key) const;
iterator lower_bound(const Key& key);
Parametry
key
Klucz argumentu do porównania z kluczem sortowania elementu z przeszukiwanego hash_multiset.
Wartość zwracana
Iterator lub const_iterator adresujący lokalizację pierwszego elementu w hash_multiset za pomocą klucza równego lub większego niż klucz argumentu albo adresujący lokalizację, która zakończyła się powodzeniem ostatniego elementu w hash_multiset, jeśli nie zostanie znalezione dopasowanie klucza.
Uwagi
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca maksymalną długość hash_multiset.
size_type max_size() const;
Wartość zwracana
Maksymalna możliwa długość hash_multiset.
Uwagi
Przykład
// 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=
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zastępuje elementy hash_multiset kopią innego hash_multiset.
hash_multiset& operator=(const hash_multiset& right);
hash_multiset& operator=(hash_multiset&& right);
Parametry
Prawy
Hash_multiset kopiowane do pliku hash_multiset
.
Uwagi
Po wymazaniu wszystkich istniejących elementów w obiekcie hash_multiset
operator=
, kopiuje lub przenosi zawartość bezpośrednio do obiektu hash_multiset
.
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Typ, który dostarcza wskaźnik do elementu w hash_multiset.
typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::pointer pointer;
Uwagi
pointer
Typ może służyć do modyfikowania wartości elementu.
W większości przypadków iterator powinien być używany do uzyskiwania dostępu do elementów w obiekcie wielozestawowym.
hash_multiset::rbegin
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca iterator odnoszący się do pierwszego elementu w odwróconej hash_multiset.
const_reverse_iterator rbegin() const;
reverse_iterator rbegin();
Wartość zwracana
Odwrotny iterator dwukierunkowy odnoszący się do pierwszego elementu w odwróconym hash_multiset lub odnoszący się do tego, co było ostatnim elementem w niereversedowanym hash_multiset.
Uwagi
rbegin
jest używany z odwróconym hash_multiset tak jak początek jest używany z hash_multiset.
Jeśli wartość zwracana rbegin
elementu jest przypisana do const_reverse_iterator
obiektu , nie można zmodyfikować obiektu hash_multiset. Jeśli wartość zwracana rbegin
elementu jest przypisana do reverse_iterator
obiektu , można zmodyfikować obiekt hash_multiset.
rbegin
umożliwia iterowanie przez hash_multiset do tyłu.
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Typ, który zawiera odwołanie do elementu przechowywanego w hash_multiset.
typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::reference reference;
Uwagi
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca iterator, który odnosi się do lokalizacji, która zakończyła się powodzeniem ostatniego elementu w odwróconym hash_multiset.
const_reverse_iterator rend() const;
reverse_iterator rend();
Wartość zwracana
Odwrotny iterator dwukierunkowy, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w odwróconej hash_multiset (lokalizacja, która poprzedzała pierwszy element w niereversedowanym hash_multiset).
Uwagi
rend
jest używany z odwróconym hash_multiset tak samo jak koniec jest używany z hash_multiset.
Jeśli wartość zwracana rend
elementu jest przypisana do const_reverse_iterator
obiektu , nie można zmodyfikować obiektu hash_multiset. Jeśli wartość zwracana rend
elementu jest przypisana do reverse_iterator
obiektu , można zmodyfikować obiekt hash_multiset. Wartość zwracana przez rend
nie powinna być wyłuszczone.
rend
umożliwia sprawdzenie, czy iterator odwrotny osiągnął koniec hash_multiset.
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Typ, który udostępnia iterator dwukierunkowy, który może odczytywać lub modyfikować element w odwróconej hash_multiset.
typedef list<typename Traits::value_type, typename Traits::allocator_type>::reverse_iterator reverse_iterator;
Uwagi
Typ reverse_iterator
służy do iterowania hash_multiset odwrotnie.
Przykład
Zobacz przykład dla narzędzia rbegin , aby zapoznać się z przykładem sposobu deklarowania i używania elementu reverse_iterator
.
hash_multiset::size
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca liczbę elementów w hash_multiset.
size_type size() const;
Wartość zwracana
Bieżąca długość hash_multiset.
Uwagi
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Niepodpisany typ liczby całkowitej, który może reprezentować liczbę elementów w hash_multiset.
typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::size_type size_type;
Uwagi
Przykład
Zobacz przykład rozmiaru, aby zapoznać się z przykładem sposobu deklarowania i używaniasize_type
hash_multiset::swap
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Wymienia elementy dwóch hash_multisets.
void swap(hash_multiset& right);
Parametry
Prawy
Argument hash_multiset dostarczający elementy, które mają zostać zamienione na hash_multiset docelową.
Uwagi
Funkcja składowa unieważnia żadne odwołania, wskaźniki lub iteratory, które wyznaczają elementy w dwóch hash_multisets, których elementy są wymieniane.
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Zwraca iterator do pierwszego elementu w hash_multiset z kluczem większym niż określony klucz.
const_iterator upper_bound(const Key& key) const;
iterator upper_bound(const Key& key);
Parametry
key
Klucz argumentu do porównania z kluczem sortowania elementu z przeszukiwanego hash_multiset.
Wartość zwracana
Iterator lub const_iterator, który adresuje lokalizację pierwszego elementu w hash_multiset z kluczem większym niż klucz argumentu, lub który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w hash_multiset, jeśli nie zostanie znalezione dopasowanie klucza.
Uwagi
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Pobiera kopię obiektu porównania używanego do porządkowenia wartości elementów w hash_multiset.
value_compare value_comp() const;
Wartość zwracana
Zwraca parametr szablonu hash_multiset Traits, który zawiera obiekty funkcji używane do wyznaczania wartości skrótu i porządkować elementy kontenera.
Aby uzyskać więcej informacji na temat cech , zobacz temat Klasa hash_multiset.
Uwagi
Przechowywany obiekt definiuje funkcję składową:
operator bool( constKey&_xVal
, const Key& _yVal);
wartość , która zwraca wartość true
, jeśli _xVal
jest poprzednia i nie jest równa _yVal
w kolejności sortowania.
Należy pamiętać, że zarówno key_compare, jak i value_compare są synonimami cech parametru szablonu. Oba typy są udostępniane dla klas hash_multiset i hash_multiset, w których są identyczne, w celu zachowania zgodności z klasami hash_map i hash_multimap, gdzie są one odrębne.
Przykład
// 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
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Typ, który udostępnia dwa obiekty funkcji, binarny predykat klasy porównywania, który może porównać dwie wartości elementów hash_multiset w celu określenia ich względnej kolejności i jednoargumentowego predykatu, który skróty elementów.
typedef key_compare value_compare;
Uwagi
value_compare
jest synonimem cech parametru szablonu.
Aby uzyskać więcej informacji na temat cech , zobacz temat Klasa hash_multiset.
Należy pamiętać, że zarówno key_compare, jak i value_compare
są synonimami cech parametru szablonu. Oba typy są udostępniane dla zestawu klas i wielozestawu, gdzie są identyczne, w celu zapewnienia zgodności z mapą klas i wielomapą, gdzie są one odrębne.
Przykład
Zobacz przykład value_comp, aby zapoznać się z przykładem sposobu deklarowania i używania elementu value_compare
.
hash_multiset::value_type
Uwaga
Ten interfejs API jest nieaktualny. Alternatywą jest klasa unordered_multiset.
Typ, który opisuje obiekt przechowywany jako element jako hash_multiset w jego pojemności jako wartość.
typedef Key value_type;
Przykład
// 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.
Zobacz też
Bezpieczeństwo wątku w standardowej bibliotece C++
Dokumentacja standardowej biblioteki C++