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
Konstruuje multimap, która jest pusta lub jest kopią całości lub części innej multimap. |
Typedefs
Typ, który reprezentuje klasę allocator dla obiektu multimap. |
|
Typ, który dostarcza iterator dwukierunkowy, który może odczytać element const w multimap. |
|
Typ, który dostarcza wskaźnik do elementu const w multimap. |
|
Typ, który dostarcza odwołanie do elementu const przechowywanego w multimap do odczytu i wykonywania operacji const. |
|
Typ, który dostarcza iterator dwukierunkowy, który może odczytać dowolny element const w multimap. |
|
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. |
|
Typ, który zawiera różnicę między dwoma iteratorami odwołującymi się do elementów w obrębie tej samej multimap. |
|
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. |
|
Typ, który opisuje obiekt klucza sortowania, stanowiący każdy element multimap. |
|
Typ, który reprezentuje typ danych przechowywanych w multimap. |
|
Typ, który dostarcza wskaźnik do elementu const w multimap. |
|
Typ, który zawiera odwołanie do elementu przechowywanego w multimap. |
|
Typ, który dostarcza iterator dwukierunkowy do odczytu i modyfikacji elementu w odwróconej multimap. |
|
Typ całkowitoliczbowy bez znaku, który dostarcza wskaźnik do elementu const w multimap. |
|
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
Zwraca iterator odnoszący się do pierwszego elementu w multimap. |
|
Zwraca stały iterator odnoszący się do pierwszego elementu w multimap. |
|
Zwraca iterator const, który dotyczy lokalizacji następującej po ostatnim elemencie w multimap. |
|
Usuwa wszystkie elementy multimap. |
|
Zwraca liczbę elementów w multimap, których klucz pasuje do klucza określonego jako parametr. |
|
Zwraca iterator const, który dotyczy pierwszego elementu w odwróconej multimap. |
|
Zwraca iterator const, który dotyczy lokalizacji następującej po ostatnim elemencie w odwróconej multimap. |
|
Wstawia element skonstruowany w miejscu do multimap. |
|
Wstawia element skonstruowany w miejscu do multimap, ze wskazówką położenia. |
|
Sprawdza, czy multimap jest pusta. |
|
Zwraca iterator odnoszący się do lokalizacji następującej po ostatnim elemencie w multimap. |
|
Wyszukuje zakres elementów, gdzie klucz elementu pasuje do określonej wartości. |
|
Usuwa element lub zakres elementów w multimap z określonych pozycji lub usuwa elementy, które odpowiadają określonemu kluczowi. |
|
Zwraca iterator odnoszący się do pierwszej lokalizacji elementu w multimap, który ma klucz równoważny z określonym kluczem. |
|
Zwraca kopię obiektu allocator użytego do stworzenia multimap. |
|
Wstawia element lub zakres elementów do multimap. |
|
Pobiera kopię obiektu porównania użytego do uporządkowania kluczy w multimap. |
|
Zwraca iterator do pierwszego elementu w multimap, wraz z kluczem, który jest równy lub większy od określonego klucza. |
|
Zwraca maksymalną długość multimap. |
|
Zwraca iterator odnoszący się do pierwszego elementu w odwróconej multimap. |
|
Zwraca iterator odnoszący się do lokalizacji następującej po ostatnim elemencie w odwróconej multimap. |
|
Zwraca liczbę elementów w multimap. |
|
Zamienia elementy z dwóch multimap. |
|
Zwraca iterator do pierwszego elementu w multimap, wraz z kluczem, który jest większy od określonego klucza. |
|
Funkcja elementu członkowskiego zwraca obiekt funkcji, która określa kolejność elementów w multimap przez porównanie ich wartości klucza. |
Operatory
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