Udostępnij za pośrednictwem


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

hash_set

Konstruuje hash_set, który jest pusty lub jest kopią całości lub części innego hash_set.

Typedefs

allocator_type

Typ, który reprezentuje klasę allocator obiektu hash_set.

const_iterator

Typ, który dostarcza iterator dwukierunkowy, który może odczytać element const w hash_set.

const_pointer

Typ, który dostarcza wskaźnik do elementu const w hash_set.

const_reference

Typ, który dostarcza odwołanie do elementu const przechowywanego w hash_set do odczytu i wykonywania operacji const.

const_reverse_iterator

Typ, który dostarcza iterator dwukierunkowy, który może odczytać dowolny element const w hash_set.

difference_type

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.

iterator

Typ, który dostarcza iterator dwukierunkowy do odczytu i modyfikacji dowolnego elementu w hash_set.

key_compare

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.

key_type

Typ, który opisuje obiekt zapisany jako element hash_set w charakterze klucza sortowania.

wskaźnik

Typ, który zawiera wskaźnik do elementu w hash_set.

odwołanie

Typ, który zawiera odwołanie do elementu przechowywanego w hash_set.

reverse_iterator

Typ, który dostarcza iterator dwukierunkowy do odczytu i modyfikacji elementu w odwróconym hash_set.

size_type

Typ liczby całkowitej bez znaku, który może reprezentować liczbę elementów w hash_set.

value_compare

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.

value_type

Typ, który opisuje obiekt zapisany jako element hash_set w charakterze wartości.

Funkcje członkowskie

rozpocznij

Zwraca iterację, którego dotyczy pierwszy element w hash_set.

hash_set::cbegin

Zwraca stały iterator adresujący pierwszy element w hash_set.

hash_set::cend

Zwraca stały iterator adresujący lokalizację następującą po ostatnim elemencie w hash_set.

wyczyść

Usuwa wszystkie elementy ciągu hash_set.

count

Zwraca liczbę elementów w hash_set, których klucz pasuje do klucza określonego jako parametr.

hash_set::crbegin

Zwraca stały iterator adresujący pierwszy element w odwróconym hash_set.

hash_set::crend

Zwraca stały iterator adresujący lokalizację następującą po ostatnim elemencie w odwróconej hash_set.

hash_set::emplace

Wstawia element stworzony w miejscu do hash_set.

hash_set::emplace_hint

Wstawia element stworzony w miejscu do hash_set, ze wskazówką położenia.

pusty

Sprawdza, czy hash_set jest pusty.

end

Zwraca iterator adresujący lokalizację następującą po ostatnim elemencie w hash_set.

equal_range

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.

wymazywanie

Usuwa element lub szereg elementów w hash_set z określonych pozycjach lub usuwa elementy zgodne z określonym kluczem.

znajdź

Zwraca iterator adresujący lokalizację elementu w hash_set, który ma klucz równoważny z określonym kluczem.

get_allocator

Zwraca kopię obiektu allocator użytego do stworzenia hash_set.

wstaw

Wstawia element lub zakres elementów do hash_set.

key_comp

Pobiera kopię obiektu porównania użytego do uporządkowania kluczy w hash_set.

lower_bound

Zwraca iterację do pierwszego elementu w hash_set za pomocą klucza, który jest równy lub większy niż określonym kluczem.

maksymalny rozmiar

Zwraca maksymalną długość hash_set.

rbegin

Zwraca iterator adresujący pierwszy element w odwróconym hash_set.

rend

Zwraca iterator adresujący lokalizację następującą po ostatnim elemencie w odwróconym hash_set.

rozmiar

Zwraca liczbę elementów w hash_set.

swap

Zamienia elementy z dwóch hash_set

upper_bound

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.

value_comp

Pobiera kopię obiektu cech mieszania używany do mieszania i zamówić element wartości kluczy w hash_set.

Operatory

hash_set::operator=

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

Inne zasoby

<hash_set> Członkowie

hash_set członkowie