hash_set — Klasa
[!UWAGA]
Ten interfejs API jest nieaktualny.Alternatywą jest unordered_set — Klasa.
Hash_set klasa kontenera jest rozszerzeniem standardowej biblioteki szablonów (STL) i jest używany do przechowywania i szybkiego pobierania danych z kolekcji, w którym wartości elementów zawarte są unikatowe i służyć jako wartości klucza.
template <
class Key,
class Traits=hash_compare<Key, less<Key> >,
class Allocator=allocator<Key>
>
class hash_set
Parametry
Key
Typ elementu danych mają być przechowywane w hash_set.Traits
Z typem, który obejmuje dwa obiekty funkcji, jednego z klasy porównać czyli predykatu dwuelementowego zdolne do porównywania dwóch wartości elementu jako klucze sortowania do określenia ich względną kolejność i funkcją mieszania, czyli predykatu jednoelementowego mapowanie wartości klucza elementów do liczb całkowitych bez znaku typu size_t.Ten argument jest opcjonalny, a hash_compare*<klucz,* mniej*<klucz >>* jest wartością domyślną.Allocator
Typ, który reprezentuje obiekt przechowywanych alokatora hermetyzuje szczegóły dotyczące alokacji i dezalokacji pamięci hash_set.Ten argument jest opcjonalny, a wartością domyślną jest programu przydzielania*<klucz>.*
Uwagi
Hash_set jest:
Skojarzeniowym kontenerem, który jest kontenerem o zmiennym rozmiarze, obsługującym efektywne pobieranie wartości elementu w oparciu o wartość skojarzonego klucza.Ponadto to proste kontenera asocjacyjne dlatego wartości jego elementów są jej wartości klucza.
Odwracalny, ponieważ zapewnia dwukierunkowy iterator do dostępu do jego elementów.
O wartości skrótu, ponieważ jego elementy są pogrupowane w przedziały na podstawie wartości funkcji skrótu zastosowanej do wartości kluczy elementów.
Unikatowe w tym sensie, że każdy z jej elementów musi mieć unikatowy klucz.Ponieważ hash_set jest również proste kontenera asocjacyjnych, jego elementy są również unikalne.
Klasa szablon ponieważ zapewnia funkcjonalność jest rodzajowy i tak niezależnie od określonego typu danych zawartych jako elementów lub klucze.Typy danych, których można użyć dla elementów i kluczy są za to określane jako parametry w szablonie klasy, wraz z funkcją porównania oraz alokatorem.
Główną zaletą tworzenia wartości skrótu nad sortowaniem jest większa wydajność; pomyślne skrócenie wykonuje wstawienia, usuwania i wyszukuje w stałym średnim czasie, w porównaniu do czasu proporcjonalnego do logarytmu liczby elementów w kontenerze dla technik sortowania.Nie można bezpośrednio zmienić wartość elementu w zestawie.Zamiast tego należy usunąć stare wartości i wstawianie elementów nowymi wartościami.
Wybór typu kontenera powinien być oparty o typ wyszukiwania i wstawiania wymagany przez aplikację.Skojarzone kontenery skrótów są zoptymalizowane dla operacji wyszukiwania, wstawiania oraz usuwania.Funkcje składowe, jawnie obsługujące te operacje są skuteczne, gdy są używane z dobrze zaprojektowaną funkcją skrótu, wykonując je w średnim stałym czasie i niezależnie od liczby elementów w kontenerze.Dobrze zaprojektowana funkcja skrótu wytwarza równomierny rozkład skrótowych wartości i minimalizuje liczbę kolizji, gdzie kolizja występuje, gdy różne wartości kluczy są mapowane do tej samej skróconej wartości.W najgorszym przypadku, z najgorszą możliwą funkcją skrótu, liczba operacji jest proporcjonalna do liczby elementów w sekwencji (czas liniowy).
Hash_set powinny być zespolone opakowania z wyboru, po spełnieniu warunków z wartości otrzymanych z klawiszy przez aplikację.Elementy hash_set są unikatowe i służyć jako klucze sortowania.Model dla tego typu konstrukcji jest uporządkowaną listę, powiedz, słowa, w których wyrazy mogą występować tylko raz.Jeżeli zezwolono na wiele wystąpień wyrazów, odpowiednią strukturą kontenera będzie hash_multiset.Jeśli wartości musi być dołączona do listy unikatowych słów kluczowych, hash_map będzie odpowiednią strukturę zawierać te dane.Jeśli zamiast klucze nie są unikatowe, hash_multimap będzie opakowania z wyboru.
Hash_set zamówień sekwencji kontroluje wywołując przechowywane mieszania cechy obiektu typu value_compare.Dostęp do tego przechowywanego obiektu można uzyskać, wywołując funkcję członkowską key_comp.Obiekt funkcji muszą zachowywać się taki sam, jak obiekt klasy hash_compare<klucz, mniej<klucz >>. W szczególności, dla wszystkich wartości _Key typu klucza, wywołanie cechę (_Key ) daje w wyniku rozkład wartości typu size_t.
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.W wyniku tego ustalona zostanie kolejność między nierównoważnymi elementami.Ze strony bardziej technicznej, funkcja porównania jest predykatem dwuargumentowym, który wymusza ścisłe słabe porządkowanie w standardowym sensie matematycznym.Predykatu dwuelementowego f(x,y) jest obiekt funkcji, która ma dwa obiekty argument x i y i wartością zwracaną wartość true lub false.Kolejność nałożonych na hash_set jest ścisłe słaby zamawiania Jeśli predykat dwuelementowy jest niezwrotne, antysymetryczna i przechodnie i jeśli równoważność jest przechodnie, gdzie dwa obiekty x i y są zdefiniowane jako równoważne, kiedy oba 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ótu przechowywanej w obiekcie kontenera.Nie można określić bieżącego rozmiaru tabeli skrótu, więc nie da się ogólnie przewidzieć uporządkowania 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.
Sterująca dostarczonych przez klasę hash_set jest sterująca dwukierunkowe, ale funkcje składowe klasy Wstaw i hash_set wersje, które biorą za parametry szablonu słabsze sterująca wejściowego, których wymogi dotyczące funkcjonalności są bardziej minimalne niż gwarantowana przez klasę Iteratory dwukierunkowego.Pojęcia innych iteratorów formują rodzinę powiązanych przez udoskonalenia w swoich funkcjonalnościach.Każde pojęcie sterująca ma swój własny zestaw wymagań i algorytmów, które działają z nimi musi ograniczyć ich założeń z wymaganiami określonymi przez ten rodzaj iteratora.Można założyć, że z iteratora wejściowego można usunąć odwołanie, aby odwołać się do obiektu, a także, że może ono być zwiększone do następnego iteratora w sekwencji.Jest to minimalny zestaw funkcji, ale wystarczy, aby można było mówić przydatnie o szereg Iteratory [_First, _Last) w kontekście funkcji elementów członkowskich klasy.
W Visual C++ .NET 2003, elementy członkowskie plików nagłówka <hash_map> i <hash_set> nie są już w przestrzeni nazw std, ale raczej zostały przeniesione do przestrzeni nazw stdext.Zobacz Przestrzeń nazw stdext, aby uzyskać więcej informacji.
Konstruktorów
Konstruuje hash_set, który jest pusty lub jest kopią całości lub części innego hash_set. |
Typedefs
Typ, który reprezentuje klasę allocator obiektu hash_set. |
|
Typ, który dostarcza iterator dwukierunkowy, który może odczytać element const w hash_set. |
|
Typ, który dostarcza wskaźnik do elementu const w hash_set. |
|
Typ, który dostarcza odwołanie do elementu const przechowywanego w hash_set do odczytu i wykonywania operacji const. |
|
Typ, który dostarcza iterator dwukierunkowy, który może odczytać dowolny element const w hash_set. |
|
Typ liczby całkowitej ze znakiem, który może służyć do reprezentowania liczby elementów hash_set w zakresie pomiędzy elementami wskazywanymi przez iteratory. |
|
Typ, który dostarcza iterator dwukierunkowy do odczytu i modyfikacji dowolnego elementu w hash_set. |
|
Typ, który dostarcza obiekt funkcji, która może porównać dwa klucze sortowania, aby określić względną kolejność dwóch elementów w hash_set. |
|
Typ, który opisuje obiekt zapisany jako element hash_set w charakterze klucza sortowania. |
|
Typ, który zawiera wskaźnik do elementu w hash_set. |
|
Typ, który zawiera odwołanie do elementu przechowywanego w hash_set. |
|
Typ, który dostarcza iterator dwukierunkowy do odczytu i modyfikacji elementu w odwróconym hash_set. |
|
Typ liczby całkowitej bez znaku, który może reprezentować liczbę elementów w hash_set. |
|
Typ, który zawiera dwa obiekty funkcji, predykatu dwuelementowego Porównaj klasy, które można porównać dwie wartości elementu hash_set do określenia ich względne zamówienia i jednoargumentowy predykat, który mieszania elementów. |
|
Typ, który opisuje obiekt zapisany jako element hash_set w charakterze wartości. |
Funkcje członkowskie
Zwraca iterację, którego dotyczy pierwszy element w hash_set. |
|
Zwraca stały iterator adresujący pierwszy element w hash_set. |
|
Zwraca stały iterator adresujący lokalizację następującą po ostatnim elemencie w hash_set. |
|
Usuwa wszystkie elementy ciągu hash_set. |
|
Zwraca liczbę elementów w hash_set, których klucz pasuje do klucza określonego jako parametr. |
|
Zwraca stały iterator adresujący pierwszy element w odwróconym hash_set. |
|
Zwraca stały iterator adresujący lokalizację następującą po ostatnim elemencie w odwróconej hash_set. |
|
Wstawia element stworzony w miejscu do hash_set. |
|
Wstawia element stworzony w miejscu do hash_set, ze wskazówką położenia. |
|
Sprawdza, czy hash_set jest pusty. |
|
Zwraca iterator adresujący lokalizację następującą po ostatnim elemencie w hash_set. |
|
Zwraca parę Iteratory odpowiednio do pierwszego elementu w hash_set za pomocą klucza, który jest większy niż określony klucz i do pierwszego elementu w hash_set za pomocą klucza, który jest równy lub większy niż ten klucz. |
|
Usuwa element lub szereg elementów w hash_set z określonych pozycjach lub usuwa elementy zgodne z określonym kluczem. |
|
Zwraca iterator adresujący lokalizację elementu w hash_set, który ma klucz równoważny z określonym kluczem. |
|
Zwraca kopię obiektu allocator użytego do stworzenia hash_set. |
|
Wstawia element lub zakres elementów do hash_set. |
|
Pobiera kopię obiektu porównania użytego do uporządkowania kluczy w hash_set. |
|
Zwraca iterację do pierwszego elementu w hash_set za pomocą klucza, który jest równy lub większy niż określonym kluczem. |
|
Zwraca maksymalną długość hash_set. |
|
Zwraca iterator adresujący pierwszy element w odwróconym hash_set. |
|
Zwraca iterator adresujący lokalizację następującą po ostatnim elemencie w odwróconym hash_set. |
|
Zwraca liczbę elementów w hash_set. |
|
Zamienia elementy z dwóch hash_set |
|
Zwraca iterację do pierwszego elementu w hash_set że przy użyciu klucza, który jest równy lub większy niż określonym kluczem. |
|
Pobiera kopię obiektu cech mieszania używany do mieszania i zamówić element wartości kluczy w hash_set. |
Operatory
Zastępuje elementy hash_set kopią innej hash_set. |
Wymagania
Nagłówek: <hash_set>
Przestrzeń nazw: stdext
Zobacz też
Informacje
Bezpieczeństwo wątku w standardowej bibliotece C++
Standardowa biblioteka szablonów