set — Klasa
Zestaw klasy kontenera STL jest używany do przechowywania i pobierania danych z kolekcji, w której wartości zawartych elementów są unikatowe, i które służą jako wartości klucza, zgodnie z którymi dane są automatycznie porządkowane.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.
template <
class Key,
class Traits=less<Key>,
class Allocator=allocator<Key>
>
class set
Parametry
Key
Typ danych elementu, który ma być przechowywany w zestawie.Traits
Typ, który dostarcza obiekt funkcji, która może porównać dwie wartości elementów jako klucze sortowania, aby określić ich względną kolejność w zestawie.Ten argument jest opcjonalny, a predykat binarny mniej <Klucz> jest wartością domyślną.Allocator
Typ reprezentujący przechowywany obiekt alokatora, który hermetyzuje szczegóły dotyczące alokacji zestawu i dezalokacji pamięci.Ten argument jest opcjonalny, a jego wartość domyślna to alokator*<>Klucz*
Uwagi
Zestaw STL jest:
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.
Posortowany, ponieważ jego elementy są uporządkowane według wartości kluczy w kontenerze zgodnie z określoną funkcją porównywania.
Unikatowy w tym sensie, że każdy z jego elementów musi mieć unikatowy klucz.Ponieważ zestaw jest również prostym kontenerem asocjacyjnym, jego elementy są również unikatowe.
Zestaw jest też opisany jako klasa szablonu, ponieważ funkcjonalność, którą zapewnia, jest generyczna i dlatego niezależna od określonego typu danych zawartych jako elementy.Typ danych, który ma być użyty, jest zamiast tego określony jako parametr w klasie szablonu wraz z funkcją porównania i alokatorem.
Wybór typu kontenera powinien ogólnie być oparty o typ wyszukiwania i wstawiania wymagany przez aplikację.Kontenery asocjacyjne są zoptymalizowane dla operacji wyszukiwania, wstawiania oraz usuwania.Funkcje elementów członkowskich, które jawnie obsługują te operacje, są skuteczne, wykonując je w czasie, który jest średnio proporcjonalny do logarytmu liczby elementów w kontenerze.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.
Zestaw powinien być kontenerem asocjacyjnym z wyboru, gdy warunki kojarzenia wartości z kluczami są spełnione przez aplikację.Elementy zestawu są unikatowe i służą jako ich własne klucze sortowania.Model dla tego typu konstrukcji jest uporządkowaną listą, np. wyrazów, w których wyrazy mogą występować tylko raz.Jeżeli zezwolono na wiele wystąpień wyrazów, odpowiednią strukturą kontenera będzie multiset.Gdyby wartości potrzebowały dołączenia do listy unikatowych słów kluczowych, mapa byłaby odpowiednią strukturą zawierającą te dane.Gdyby natomiast klucze nie były unikatowe, mapa wielokrotna byłaby kontenerem z wyboru.
Zestaw porządkuje sekwencję, którą kontroluje, przez wywołanie przechowywanego obiektu funkcji typu key_compare.Ten przechowywany obiekt jest funkcją porównywania, która może być dostępna poprzez wywołanie funkcji elementu członkowskiego key_comp.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.Binarny predykat f(x,y) jest obiektem funkcji, która ma dwa obiekty argumentu x i y oraz wartość zwracaną true lub false.Kolejność nałożona na zestaw jest ścisłym słabym porządkowaniem, jeśli predykat binarny jest niezwrotny, przeciwsymetryczny i przechodni oraz jeśli równoważność jest przechodnia, gdzie dwa obiekty x i y są zdefiniowane jako równoważne, gdy zarówno f(x,y), jak i f(y,x) mają wartość false.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.
Iterator dostarczony przez klasę zestawu jest iteratorem dwukierunkowym, ale funkcje elementów członkowskich klasy insert i set mają wersje przyjmujące jako parametry szablonu słabszy iterator danych wejściowych, którego wymagania funkcjonalności są mniejsze niż te gwarantowane przez klasę iteratorów dwukierunkowych.Pojęcia innych iteratorów formują rodzinę powiązaną przez udoskonalenia w ich funkcjonalnościach.Każde pojęcie iteratora ma swój własny zestaw wymagań, a algorytmy z nimi pracujące muszą ograniczać swoje założenia co do wymagań dostarczonych przez tego typu iterator.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 minimalny zestaw funkcjonalności, ale jest wystarczający, aby można było mówić znacząco o zakresie iteratorów [First, Last) w kontekście funkcji członkowskich klasy.
Konstruktory
Konstruuje zestaw, który jest pusty lub jest kopią całości lub części innego zestawu. |
Typedefs
Typ, który reprezentuje klasę allocator dla obiektu zestawu. |
|
Typ, który dostarcza iterator dwukierunkowy, który może odczytać element const w zestawie. |
|
Typ, który dostarcza wskaźnik do elementu const w zestawie. |
|
Typ, który dostarcza odwołanie do elementu const przechowywanego w zestawie w celu odczytu i wykonywania operacji const. |
|
Typ, który dostarcza iterator dwukierunkowy, który może odczytać dowolny element const w zestawie. |
|
Typ liczby całkowitej ze znakiem, który może służyć do reprezentowania liczby elementów zestawu w zakresie pomiędzy elementami wskazywanymi przez iteratory. |
|
Typ, który dostarcza iterator dwukierunkowy do odczytu i modyfikacji dowolnego elementu w zestawie. |
|
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 zestawie. |
|
Typ opisuje obiekt zapisany jako element zestawu w charakterze klucza sortowania. |
|
Typ, który dostarcza wskaźnik do elementu w zestawie. |
|
Typ, który zawiera odwołanie do elementu przechowywanego w zestawie. |
|
Typ, który dostarcza iterator dwukierunkowy do odczytu i modyfikacji elementu w odwróconym zestawie. |
|
Typ całkowitoliczbowy bez znaku, który może reprezentować liczbę elementów w zestawie. |
|
Typ, który dostarcza obiekt funkcji, która może porównać dwa elementy jako klucze sortowania, aby określić ich względną kolejność w zestawie. |
|
Typ opisuje obiekt zapisany jako element zestawu w charakterze wartości. |
Funkcje elementów członkowskich
Zwraca iterator, który dotyczy pierwszego elementu w zestawie. |
|
Zwraca iterator const, który dotyczy pierwszego elementu w zestawie. |
|
Zwraca iterator const, który dotyczy lokalizacji następującej po ostatnim elemencie w zestawie. |
|
Usuwa wszystkie elementy zestawu. |
|
Zwraca liczbę elementów w zestawie, których klucz pasuje do klucza określonego jako parametr. |
|
Zwraca iterator const, który dotyczy pierwszego elementu w odwróconym zestawie. |
|
Zwraca iterator const, który dotyczy lokalizacji następującej po ostatnim elemencie w odwróconym zestawie. |
|
Wstawia element skonstruowany w miejscu do zestawu. |
|
Wstawia element skonstruowany w miejscu do zestawu, ze wskazówką położenia. |
|
Sprawdza, czy zestaw jest pusty. |
|
Zwraca iterator odnoszący się do lokalizacji następującej po ostatnim elemencie w zestawie. |
|
Zwraca parę iteratorów odpowiednio do pierwszego elementu w zestawie przy użyciu klucza, który jest większy niż określony klucz, i do pierwszego elementu w zestawie przy użyciu klucza, który jest równy lub większy niż ten klucz. |
|
Usuwa element lub zakres elementów w zestawie z określonych pozycji lub usuwa elementy, które odpowiadają określonemu kluczowi. |
|
Zwraca iterator odnoszący się do pierwszej lokalizacji elementu w zestawie, który ma klucz równoważny z określonym kluczem. |
|
Zwraca kopię obiektu allocator użytego do stworzenia zestawu. |
|
Wstawia element lub zakres elementów do zestawu. |
|
Pobiera kopię obiektu porównania użytego do uporządkowania kluczy w zestawie. |
|
Zwraca iterator do pierwszego elementu w zestawie, z kluczem, który jest równy lub większy od określonego klucza. |
|
Zwraca maksymalną długość zestawu. |
|
Zwraca iterator odnoszący się do pierwszego elementu w odwróconym zestawie. |
|
Zwraca iterator odnoszący się do lokalizacji następującej po ostatnim elemencie w odwróconym zestawie. |
|
Zwraca liczbę elementów w zestawie. |
|
Zamienia elementy z dwóch zestawów. |
|
Zwraca iterator do pierwszego elementu w zestawie z kluczem, który jest większy od określonego klucza. |
|
Pobiera kopię obiektu porównania, użytego do uporządkowania wartości elementów w zestawie. |
Operatory
Zastępuje elementy zestawu kopią innego zestawu. |
Wymagania
Nagłówek: <set>
Przestrzeń nazw: std
Zobacz też
Informacje
Bezpieczeństwo wątku w standardowej bibliotece C++
Standardowa biblioteka szablonów