Udostępnij za pośrednictwem


multimap — Klasa

Klasa mapy wielokrotnej standardowej biblioteki szablonów jest używana do przechowywania i pobierania danych z kolekcji, w której każdy element jest parą, która ma zarówno wartość danych, jak i klucz sortowania.Wartość klucza nie musi unikatowa i jest używana do automatycznego porządkowania danych.Wartość elementu w mapie wielokrotnej, ale nie wartość jego skojarzonego klucza, może być zmieniona bezpośrednio.Zamiast tego, wartości kluczy skojarzone ze starymi elementami muszą zostać usunięte, a nowe wartości klucza skojarzone z nowymi wstawionymi elementami.

template <
   class Key, 
   class Type, 
   class Traits=less<Key>, 
   class Allocator=allocator<pair <const Key, Type> > 
> class multimap;

Parametry

  • Key
    Typ danych klucza, który ma być przechowywany w mapie wielokrotnej.

  • Type
    Typ danych elementu, który ma być przechowywany w mapie wielokrotnej.

  • 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 mapie wielokrotnej.Predykat binarny less<Key> to wartość domyślna.

  • Allocator
    Typ reprezentujący przechowywany obiekt alokatora, który hermetyzuje szczegóły dotyczące alokacji mapy i dezalokacji pamięci.Ten argument jest opcjonalny, a jego wartość domyślna to allocator<pair <const Key, Type> >.

Uwagi

Klasa map wielokrotnych 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.

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

  • Wielokrotna, ponieważ jej elementy nie muszą mieć unikatowych kluczy, więc jedna wartość klucza może mieć wiele wartości elementów danych z nią skojarzonych.

  • Kontenerem skojarzonych par, ponieważ jej wartości danych elementu różnią się od wartości klucza.

  • Klasą szablonu, ponieważ funkcjonalność, którą zapewnia, jest generyczna i dlatego niezależna 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.

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

Mapa wielokrotna powinna być kontenerem asocjacyjnym z wyboru, gdy warunki kojarzenia wartości z kluczami są spełnione przez aplikację.Modelem dla tego typu struktury jest uporządkowana lista słów kluczowych ze skojarzonymi wartościami ciągów, dostarczająca np. definicje, w których słowa nie były zawsze zdefiniowane unikalnie.Jeśli zamiast tego słowa kluczowe zostały unikalnie zdefiniowane, tak że klucze są unikalne, wybranym kontenerem będzie map.Jeśli z drugiej strony, przechowywana była tylko lista wyrazów, poprawnym kontenerem będzie set.Jeżeli zezwolono na wiele wystąpień wyrazów, odpowiednią strukturą kontenera będzie multiset.

Mapa wielokrotna 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.Predykat binarny f(x,y) jest obiektem funkcji, który 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.

Elementy członkowskie

Konstruktory

multimap

Konstruuje multimap, która jest pusta lub jest kopią całości lub części innej multimap.

Typedefs

allocator_type

Typ, który reprezentuje klasę allocator dla obiektu multimap.

const_iterator

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

const_pointer

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

const_reference

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

const_reverse_iterator

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

difference_type

Typ liczby całkowitej ze znakiem, który może służyć do reprezentowania liczby elementów multimap w zakresie pomiędzy elementami wskazywanymi przez iteratory.

iterator

Typ, który zawiera różnicę między dwoma iteratorami odwołującymi się do elementów w obrębie tej samej multimap.

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

key_type

Typ, który opisuje obiekt klucza sortowania, stanowiący każdy element multimap.

mapped_type

Typ, który reprezentuje typ danych przechowywanych w multimap.

pointer

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

reference

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

reverse_iterator

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

size_type

Typ całkowitoliczbowy bez znaku, który dostarcza wskaźnik do elementu const w multimap.

value_type

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

Funkcje elementów członkowskich

begin

Zwraca iterator odnoszący się do pierwszego elementu w multimap.

cbegin

Zwraca stały iterator odnoszący się do pierwszego elementu w multimap.

cend

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

clear

Usuwa wszystkie elementy multimap.

count

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

crbegin

Zwraca iterator const, który dotyczy pierwszego elementu w odwróconej multimap.

crend

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

emplace

Wstawia element skonstruowany w miejscu do multimap.

emplace_hint

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

empty

Sprawdza, czy multimap jest pusta.

end

Zwraca iterator odnoszący się do lokalizacji następującej po ostatnim elemencie w multimap.

equal_range

Wyszukuje zakres elementów, gdzie klucz elementu pasuje do określonej wartości.

erase

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

find

Zwraca iterator odnoszący się do pierwszej lokalizacji elementu w multimap, który ma klucz równoważny z określonym kluczem.

get_allocator

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

insert

Wstawia element lub zakres elementów do multimap.

key_comp

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

lower_bound

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

max_size

Zwraca maksymalną długość multimap.

rbegin

Zwraca iterator odnoszący się do pierwszego elementu w odwróconej multimap.

rend

Zwraca iterator odnoszący się do lokalizacji następującej po ostatnim elemencie w odwróconej multimap.

size

Zwraca liczbę elementów w multimap.

swap

Zamienia elementy z dwóch multimap.

upper_bound

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

value_comp

Funkcja elementu członkowskiego zwraca obiekt funkcji, która określa kolejność elementów w multimap przez porównanie ich wartości klucza.

Operatory

operator=

Zastępuje elementy multimap kopią innej multimap.

Wymagania

Nagłówek: <map>

Przestrzeń nazw: std

Pary (klucz, wartość) są przechowywane w mapie wielokrotnej jako obiekty typu pair.Klasa pary wymaga nagłówka <utility>, który jest automatycznie dołączany przez <map>.

Zobacz też

Informacje

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

Standardowa biblioteka szablonów

Koncepcje

Kontenery

Inne zasoby

<map> Członkowie