Udostępnij za pośrednictwem


multiset — Klasa

Klasa zestawów wielokrotnych Standardowej biblioteki szablonów jest używana do przechowywania i pobierania danych z kolekcji, w której wartości zawartych elementów nie muszą być 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 klucza elementu w zestawie wielokrotnym.Zamiast tego trzeba usunąć stare wartości i wstawić elementy z nowymi wartościami.

template < 
   class Key,  
   class Compare=less<Key>,  
   class Allocator=allocator<Key>  
> 
class multiset

Parametry

  • Key
    Typ danych elementu do przechowywania w zestawie wielokrotnym.

  • Compare
    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 wielokrotnym.Domyślna wartość to predykat binarny mniej<Klucz>.

  • Allocator
    Typ reprezentujący przechowywany obiekt alokatora, który hermetyzuje szczegóły dotyczące alokacji zestawu wielokrotnego i dezalokacji pamięci.Domyślna wartość to alokator*<Klucz>.*

Uwagi

Klasa wielokrotnych zestawów STL to:

  • Kontener asocjacyjny, który jest kontenerem o zmiennym rozmiarze, obsługującym efektywne pobieranie wartości elementu w oparciu o wartość skojarzonego klucza.

  • Odwracalny, ponieważ zapewnia dwukierunkowe iteratory 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.

  • Wielokrotny w tym sensie, że jego elementy nie muszą mieć unikatowych kluczy, więc jedna wartość klucza może mieć wiele wartości elementów z nią skojarzonych.

  • Prosty kontener asocjacyjny, ponieważ jego wartości elementu są jego wartościami klucza.

  • 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.

Iterator dostarczony przez klasę zestawu wielokrotnego jest iteratorem dwukierunkowym, ale funkcje elementów członkowskich klasy insert i multiset 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.

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 wielokrotny powinien być kontenerem asocjacyjnym z wyboru, gdy warunki kojarzenia wartości z kluczami są spełnione przez aplikację.Elementów zestawu wielokrotnego może być wiele, mogą 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 nie zezwolono na wiele wystąpień wyrazów, odpowiednią strukturą kontenera byłby zestaw.Gdyby unikatowe definicje zostały dołączone jako wartości do listy unikatowych słów kluczowych, mapa byłaby odpowiednią strukturą zawierającą te dane.Gdyby natomiast definicje nie były unikatowe, mapa wielokrotna byłaby kontenerem z wyboru.

Zestaw wielokrotny porządkuje sekwencję, którą kontroluje, przez wywołanie obiektu przechowywanej funkcji typu 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.

Konstruktory

multiset

Konstruuje multiset, który jest pusty lub jest kopią całości lub części określonego multiset.

Typedefs

allocator_type

Element typedef dla klasy allocator dla obiektu multiset.

const_iterator

Element typedef dla iteratora dwukierunkowego, który może odczytać element const w multiset.

const_pointer

Element typedef dla wskaźnika do elementu const w multiset.

const_reference

Element typedef dla odwołania do elementu const przechowywanego w multiset do odczytu i wykonywania operacji const.

const_reverse_iterator

Element typedef dla iteratora dwukierunkowego, który może odczytać dowolny element const w multiset.

difference_type

Element typedef całkowitoliczbowy ze znakiem dla liczby elementów multiset w zakresie między elementami wskazywanymi przez iteratory.

iterator

Element typedef dla iteratora dwukierunkowego, który może odczytać lub zmodyfikować dowolny element w multiset.

key_compare

Element typedef dla obiektu funkcji, która może porównać dwa klucze, aby określić względną kolejność dwóch elementów w multiset.

key_type

Element typedef dla obiektu funkcji, która może porównać dwa klucze sortowania, aby określić względną kolejność dwóch elementów w multiset.

pointer

Element typedef dla wskaźnika do elementu w multiset.

reference

Element typedef dla odwołania do elementu przechowywanego w multiset.

reverse_iterator

Element typedef dla iteratora dwukierunkowego, który może odczytać lub zmodyfikować element w odwróconym multiset.

size_type

Typ całkowitoliczbowy bez znaku, który może reprezentować liczbę elementów w multiset.

value_compare

Element typedef dla obiektu funkcji, która może porównać dwa elementy jako klucze sortowania, aby określić ich względną kolejność w multiset.

value_type

Element typedef, który opisuje obiekt zapisany jako element jako multiset w charakterze wartości.

Funkcje elementów członkowskich

begin

Zwraca iterator, który wskazuje na pierwszy element w multiset.

cbegin

Zwraca iterator const, który dotyczy pierwszego elementu w multiset.

cend

Zwraca iterator const, który dotyczy lokalizacji następującej po ostatnim elemencie w multiset.

clear

Usuwa wszystkie elementy multiset.

count

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

crbegin

Zwraca iterator const, który dotyczy pierwszego elementu w odwróconym zestawie.

crend

Zwraca iterator const, który dotyczy lokalizacji następującej po ostatnim elemencie w odwróconym zestawie.

emplace

Wstawia element skonstruowany w miejscu do multiset.

emplace_hint

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

empty

Sprawdza, czy multiset jest pusty.

end

Zwraca iterator, który wskazuje na lokalizację po ostatnim elemencie w multiset.

equal_range

Zwraca parę iteratorów.Pierwszy iterator w parze wskazuje na pierwszy element w multiset za pomocą klucza, która jest większy niż określony klucz.Drugi iterator w parze wskazuje na pierwszy element w multiset za pomocą klucza, która jest równy lub większy niż określony klucz.

erase

Usuwa element lub zakres elementów w multiset z określonych pozycji lub usuwa elementy, które odpowiadają określonemu kluczowi.

find

Zwraca iterator, który wskazuje na pierwszą lokalizację elementu w multiset, który ma klucz równy określonemu kluczowi.

get_allocator

Zwraca kopię obiektu allocator użytego do skonstruowania multiset.

insert

Wstawia element lub zakres elementów do multiset.

key_comp

Zapewnia obiekt funkcji, która może porównać dwa klucze sortowania, aby określić względną kolejność dwóch elementów w multiset.

lower_bound

Zwraca iterator do pierwszego elementu w multiset, z kluczem, który jest równy lub większy od określonego klucza.

max_size

Zwraca maksymalną długość multiset.

rbegin

Zwraca iterator, który wskazuje na pierwszy element w odwróconym multiset.

rend

Zwraca iterator, który wskazuje na lokalizację następującą po ostatnim elemencie w odwróconym multiset.

size

Zwraca liczbę elementów w multiset.

swap

Zamienia elementy z dwóch multiset.

upper_bound

Zwraca iterator do pierwszego elementu w multiset z kluczem, który jest większy od określonego klucza.

value_comp

Pobiera kopię obiektu porównania, użytego do uporządkowania wartości elementów w multiset.

Operatory

operator=

Zastępuje elementy multiset kopią innego multiset.

Wymagania

Nagłówek: <set>

Przestrzeń nazw: std

Zobacz też

Informacje

Bezpieczeństwo wątku w standardowej bibliotece C++

Standardowa biblioteka szablonów

Koncepcje

Kontenery

Inne zasoby

<set> Członkowie