multimap-Klasse
Die Standardvorlagenbibliothek-Mehrfachzuordnungsklasse wird zum Speichern und Abrufen von Daten aus einer Sammlung verwendet, in der jedes Element ein Paar ist, das einen Datenwert und einen Sortierschlüssel hat. Der Wert der Schlüssel muss nicht eindeutig sein und wird verwendet, um die Daten automatisch zu sortieren. Der Wert eines Elements in einer Mehrfachzuordnung, aber nicht der zugehörige Schlüsselwert, wird möglicherweise direkt geändert. Stattdessen müssen die Schlüsselwerte, die alten Elementen zugeordnet sind, gelöscht, und stattdessen neuen Schlüsselwerten für neue Elemente zugeordnet werden.
template <
class Key,
class Type,
class Traits=less<Key>,
class Allocator=allocator<pair <const Key, Type> >
> class multimap;
Parameter
Key
Der in der Mehrfachzuordnung zu speichernde Schlüsseldatentyp.Type
Der in der Mehrfachzuordnung zu speichernde Elementdatentyp.Traits
Der Typ, der ein Funktionsobjekt bereitstellt, das zwei Elementwerte als Sortierschlüssel vergleichen kann, um deren relative Reihenfolge in der Mehrfachzuordnung zu bestimmen. Das binäre Prädikat less<Key> ist der Standardwert.Allocator
Der Typ, der das gespeicherte Zuordnungsobjekt darstellt, das Details zum Belegen und Freigeben des Arbeitsspeichers der Zuordnung kapselt. Dieses Argument ist optional, und der Standardwert ist allocator<pair <const Key, Type> >.
Hinweise
Die STL-Mehrfachzuordnungsklasse ist
Ein assoziativer Container, der ein Container variabler Größe ist, der den effizienten Abruf von Elementwerten auf Grundlage eines zugeordneten Schlüsselwert unterstützt.
Umkehrbar, da bidirektionale Iteratoren für den Zugriff auf die Elemente bereitgestellt werden.
Sortiert, da die Elemente anhand von Schlüsselwerten innerhalb des Containers mit einer angegebenen Vergleichsfunktion sortiert werden.
Mehrfach, da die Elemente keine eindeutige Schlüssel aufweisen müssen, damit ein Schlüsselwert über viele zugeordnete Elementdatenwerte verfügen kann.
Ein Paar assoziativer Container, da sich die Elementdatenwerte von den Schlüsselwerten unterscheiden.
Eine Vorlagenklasse, da die bereitgestellten Funktionen generisch ist und daher unabhängig vom angegebenen Datentyp, der als Elemente oder Schlüssel enthalten ist. Die für Elemente und Schlüssel zu verwendenden Datentypen werden stattdessen in der Klassenvorlage zusammen mit der Vergleichsfunktion und der Zuweisung als Parameter angegeben.
Der von einer Zuordnungsklasse bereitgestellte Iterator ist ein bidirektionaler Iterator. Die Klassenmemberfunktionen insert und multimap weisen allerdings Versionen auf, die einen abgeschwächten Eingabeiterator als Vorlagenparameter akzeptieren, dessen Funktionalitätsanforderungen weniger umfangreich sind, als die von der Klasse bidirektionaler Iteratoren garantierten. Die verschiedenen Iteratorkonzepte bilden eine Family, die durch Verfeinerungen in ihrer Funktionen verknüpft ist. Jedes Iteratorkonzept weist einen eigenen Satz von Anforderungen auf, und die damit funktionierenden Algorithmen müssen die Annahmen hinsichtlich der von diesem Iteratortyp bereitgestellten Anforderungen begrenzen. Es kann davon ausgegangen werden, dass ein Eingabeiterator möglicherweise so dereferenziert wird, dass er auf ein Objekt verweist und dieses möglicherweise zum folgenden Iterator in der Sequenz erhöht. Das ist ein minimaler Funktionssatz, allerdings genügt er, um sinnvoll über einen Bereich von [First, Last)-Iteratoren im Kontext der Klassenmemberfunktionen zu sprechen.
Die Auswahl des Containertyps sollte im Allgemeinen auf Grundlage des für die Anwendung erforderlichen Suchen und Einfügetyps erfolgen. Assoziative Container sind für Such-, Einfüge- und Entfernvorgänge optimiert. Die Memberfunktionen, die diese Vorgänge explizit unterstützen, sind effizient und führen sie in einer Zeit aus, die zum Logarithmus der Elementanzahl im Container im Durchschnitt proportional ist. Das Einfügen von Elementen führt nicht dazu, dass Iteratoren ungültig werden, und durch das Entfernen von Elementen werden nur solche Iteratoren ungültig, die speziell auf die entfernten Elemente gezeigt haben.
Die Mehrfachzuordnung sollte der ausgewählte assoziative Container sein, wenn die Bedingungen, mit denen die Werte von der Anwendung den Schlüsseln zugeordnet werden, erfüllt werden. Ein Modell für diesen Strukturtyp ist eine sortierte Liste von Schlüsselwörtern mit zugeordneten Zeichenfolgewerten, die, sagen wir, Definitionen bereitstellen, in denen die Wörter nicht immer eindeutig definiert wurden. Wenn die Schlüsselwörter stattdessen eindeutig definiert werden, damit die Schlüssel eindeutig sind, ist eine Zuordnung der gewählte Container. Wenn hingegen nur die Wortliste gespeichert wurde, ist ein Satz der richtige Container. Wenn mehrfaches Vorkommen der Wörter zugelassen wird, ist eine Multimenge die geeignete Containerstruktur.
Die Mehrfachzuordnung sortiert die von ihr gesteuerte Sequenz, indem ein gespeichertes Funktionsobjekt vom Typ key_compare aufgerufen wird. Bei diesem gespeicherten Objekt handelt es sich um eine Vergleichsfunktion, auf die zugegriffen werden kann, indem die key_comp-Memberfunktion aufgerufen wird. Im Allgemeinen müssen die Elemente der Vorwärtsiteratoren etwas weniger als vergleichbar sein, um diese Sortierung zu erstellen, sodass beliebige zwei Elemente möglicherweise als gleichwertig bestimmt werden (in dem Sinne, dass keins geringer als das Andere ist), oder dass eins geringer als das Andere ist. Dies führt zu einer Sortierung zwischen den nicht gleichwertigen Elementen. Etwas technischer betrachtet ist die Vergleichsfunktion ein binäres Prädikat, das eine strenge schwache Sortierung im mathematischen Sinn verursacht. Bei einem binären f(x,y)-Prädikat handelt es sich um ein Funktionsobjekt, das die zwei Argumentobjekte x und y aufweist sowie einen Rückgabewert von "true" oder "false". Eine Sortierung, die bei einem Satz erzeugt wird, ist eine strenge schwache Sortierung, wenn das binäre Prädikat irreflexiv, antisymmetrisch und transitiv ist, und wenn die Äquivalenz transitiv ist; wobei zwei Objekte x und y so definiert werden, dass sie äquivalent sind, wenn sowohl f(x,y) als auch f(y,x) "false" ist. Wenn der stärkere Gleichheitszustand zwischen Schlüsseln die Äquivalenz ersetzt, erfolgt die Sortierung total (d. h., alle Elemente werden zueinander sortiert), und die verglichenen Schlüssel sind von den einander nicht mehr zu unterscheiden.
Member
Konstruktoren
Erstellt ein multimap-Element, das leer oder die Kopie eines ganzen anderen multimap-Elements oder eines Teils davon ist. |
Typedefs
Ein Typ, der die allocator-Klassentyp für das multimap-Objekt darstellt. |
|
Ein Typ, der einen bidirektionalen Iterator bereitstellt, der im multimap-Element ein const-Element lesen kann. |
|
Ein Typ, der einen Zeiger auf ein const-Element in einem multimap-Element bereitstellt. |
|
Ein Typ, der einen Verweis auf ein const-Element bereitstellt, das in einem multimap-Element zum Lesen und Ausführen von const-Vorgängen gespeichert ist. |
|
Ein Typ, der einen bidirektionalen Iterator bereitstellt, der im multimap-Element jedes const-Element lesen kann. |
|
Ein Ganzzahltyp mit Vorzeichen, der dazu verwendet werden kann, die Anzahl von Elementen eines multimap-Elements in einen Bereich zwischen Elementen darzustellen, auf die von Iteratoren gezeigt wird. |
|
Ein Typ, der den Unterschied zwischen zwei Iteratoren, die auf Elemente innerhalb derselben multimap verweisen, bereitstellt. |
|
Eine Typ, der ein Funktionsobjekt bereitstellt, das zwei Sortierschlüssel vergleichen kann, um die relative Position von zwei Elementen im multimap-Element zu bestimmen. |
|
Ein Typ, mit dem das Sortierschlüsselobjekt beschrieben wird, das jedes Element von multimap bildet. |
|
Ein Typ, der den in einer multimap gespeicherten Datentyp darstellt. |
|
Ein Typ, der einen Zeiger auf ein const-Element in einem multimap-Element bereitstellt. |
|
Ein Typ, der einen Verweis auf ein in einer multimap gespeichertes Element bereitstellt. |
|
Ein Typ, der einen bidirektionalen Iterator bereitstellt, mit dem ein Element in einem umgekehrten multimap-Element gelesen oder geändert werden kann. |
|
Ein ganze Zahl ohne Vorzeichen, die einen Zeiger auf ein const-Element in einer multimap bereitstellt. |
|
Eine Typ, der ein Funktionsobjekt bereitstellt, das zwei Elemente als Sortierschlüssel vergleichen kann, um die relative Position im multimap-Element zu bestimmen. |
Memberfunktionen
Gibt ein Iterator zurück, der das erste Element im multimap-Element adressiert. |
|
Gibt einen konstanten Iterator zurück, der das erste Element im multimap-Element adressiert. |
|
Gibt einen konstanten Iterator zurück, der den Speicherort adressiert, der dem letzten Element eines multimap-Elements nachfolgt. |
|
Löscht alle Elemente einer multimap auf. |
|
Gibt die Anzahl von Elementen in einem multimap-Element zurück, dessen Schlüssel dem von einem Parameter angegebenen Schlüssel entspricht. |
|
Gibt einen konstanten Iterator zurück, der das erste Element im umgekehrten multimap-Element adressiert. |
|
Gibt einen konstanten Iterator zurück, der den Speicherort adressiert, der dem letzten Element eines umgekehrten multimap-Elements nachfolgt. |
|
Fügt ein Element ein, das vor Ort in ein multimap-Element erstellt wird. |
|
Fügt ein Element ein, das vor Ort mit einem Platzierungshinweis in ein multimap-Element erstellt wird. |
|
Testet, ob ein multimap-Element leer ist. |
|
Gibt einen Iterator zurück, der den Speicherort adressiert, der dem letzten Element einem multimap-Element nachfolgt. |
|
Sucht den Bereich von Elementen, in dem der Schlüssel des Elements einem angegebenen Wert entspricht. |
|
Es wird ein Element oder ein Bereich von Elementen in einem multimap von angegebenen Speicherorten entfernt, oder es werden die einem angegebenen Schlüssel entsprechenden Elemente entfernt. |
|
Gibt einen Iterator zurück, der die erste Position eines Elements in einem multimap-Element adressiert, das einen Schlüssel aufweist, der einem angegebenen Schlüssel entspricht. |
|
Gibt eine Kopie des zum Erstellen von allocator verwendeten multimap-Objekts zurück. |
|
Fügt ein Element oder einen Elementbereich in ein multimap-Element ein. |
|
Ruft eine Kopie des Vergleichsobjekts ab, das zum Sortieren der Schlüssel in multimap verwendet wird. |
|
Gibt einen Iterator zum ersten Element in einem multimap-Element mit einem Schlüssel zurück, der gleich oder größer ist als ein angegebener Schlüssel. |
|
Gibt die Maximallänge der multimap zurück. |
|
Gibt einen Iterator zurück, der das erste Element in einem umgekehrten multimap-Element adressiert. |
|
Gibt einen Iterator zurück, der den Speicherort adressiert, der dem letzten Element eines umgekehrten multimap-Elements nachfolgt. |
|
Gibt die Anzahl von Elementen in der multimap zurück. |
|
Tauscht die Elemente zweier multimapn. |
|
Gibt einen Iterator zum ersten Element in einem multimap-Element mit einem Schlüssel zurück, der größer ist als ein angegebener Schlüssel. |
|
Die Memberfunktion gibt ein Funktionsobjekt zurück, das die Reihenfolge der Elemente in einer multimap bestimmt, indem ihre Schlüsselwerte verglichen werden. |
Operators
Ersetzt die Elemente eines multimap-Elements durch eine Kopie eines anderen multimap-Elements. |
Anforderungen
Header: <map>
Namespace: std
Die Paare (key, value) werden in einer Multimenge als Objekte vom Typ pair gespeichert. Die Paarklasse erfordert das Header-<Hilfsprogramm>, das automatisch durch die <Zuordnung>enthalten ist.
Siehe auch
Referenz
Threadsicherheit in der C++-Standardbibliothek