multiset Class
Der Standard Template Library-multiset-Klasse wird für die Speicherung und Abruf von Daten aus einer Auflistung, in denen die Werte der enthaltenen Elemente nicht eindeutig sein müssen und in die sie als die Schlüsselwerte dienen, nach denen die Daten automatisch sortiert werden.Der Schlüsselwert des Elements in einer Multiset kann nicht direkt geändert werden.Stattdessen müssen die alten Werte gelöscht werden, und Elemente mit neuen Werten eingefügt.
template <
class Key,
class Compare=less<Key>,
class Allocator=allocator<Key>
>
class multiset
Parameter
Schlüssel
Der Datentyp für die Element in der Multiset gespeichert werden.Compare
Der Typ, der ein Funktionsobjekt bereitstellt, die zwei Elementwerte als Sortierschlüssel, um ihre relative Reihenfolge in der Multiset bestimmen vergleichen können.Binäres Prädikat weniger<Key> ist der Standardwert.Allocator
Der Typ, der das gespeicherte Zuweisung-Objekt darstellt, das Informationen über die Zuweisung und Freigabe des Speichers der Multiset kapselt.Der Standardwert ist Zuweisung*<Key>.*
Hinweise
Die STL multiset-Klasse ist:
Ein assoziativer Container, die einen Container mit variabler Größe, der den effizienten Abruf von Elementwerte basierend auf einem zugeordneten Schlüsselwert unterstützt.
Umkehrbar, da es sich um bidirektionale Iteratoren Zugriff auf ihre Elemente bereitstellt.
Sortiert, da die Elemente von Schlüsselwerten innerhalb des Containers entsprechend einer angegebenen Vergleichsfunktion angeordnet werden.
Mehrere in den Sinn, den seine Elemente nicht müssen eindeutige Schlüssel haben damit einen Schlüsselwert viele Elementwerte zugeordnet haben.
Eine einfache assoziative Container da seine Elementwerte seine Schlüsselwerte sind.
Eine Vorlagenklasse, da dadurch die Funktionalität ist generisch und so unabhängig von den spezifischen Typ der Daten, die als Elemente enthalten.Der Datentyp zu verwendenden ist, stattdessen als Parameter in der Vorlage-Klasse zusammen mit der Vergleichsfunktion und Zuweisung angegeben.
Der Iterator der multiset-Klasse ist eine bidirektionale-Iterator, aber die Memberfunktionen der Klasse Legen Sie und Multiset Versionen, die als Vorlagenparameter schwächeren input-Iterator nehmen, deren Funktionalität mehr als durch die Klasse der bidirektionalen Iteratoren garantierte minimal sind.Die verschiedenen Iterator Konzepte bilden eine Familie von Verbesserungen in der Funktionalität.Jeder Iterator-Konzept hat seine eigenen Anforderungen und die Algorithmen, mit denen sie zusammenarbeiten müssen ihre Annahmen zu den Anforderungen nach Art der Iterator beschränken.Es kann angenommen werden, dass eine input-Iterator dereferenziert werden kann, um auf ein Objekt zu verweisen und es in der Reihenfolge der nächsten Iterator erhöht werden kann.Dies ist eine minimale Gruppe von Funktionen, aber es ist genug, um sinnvoll zu einer Reihe von Iteratoren sprechen können [_First, _Last) im Kontext von Memberfunktionen der Klasse.
Die Wahl von Containertyp sollte beruhen im Allgemeinen auf den Typ der Suche und Einfügen von der Anwendung benötigt.Assoziative Container sind optimiert für den Geschäftsbetrieb des Lookup, einfügen und entfernen.Die Memberfunktionen, die explizit diese Operationen unterstützen sind effizienter, sie in eine Zeit, die durchschnittlich proportional zu den Logarithmus von der Anzahl der Elemente im Container durchführen.Einfügen von Elementen keine Iteratoren ungültig, und Entfernen von Elementen ungültig macht nur die Iteratoren, die speziell auf die entfernten Elemente hingewiesen hatte.
Multiset sollten der assoziative Container Wahl, wenn die Bedingungen, die ihre Schlüssel zuordnen die Werte sind von der Anwendung erfüllt sein.Die Elemente einer Multiset möglicherweise mehrere und dienen als ihre eigenen Sortierschlüssel, so dass der Schlüssel nicht eindeutig sind.Ein Modell für diese Art von Struktur ist eine geordnete Liste von sagen, Wörter, in denen die Wörter mehr als einmal auftreten können.Hatte mehrere Vorkommen der Wörter nicht erlaubt wurde und dann ein Satz der entsprechenden Containerstruktur gewesen wäre.Wenn eindeutige Definitionen als Werte in die Liste der eindeutigen Schlüsselwörter angefügt wurden, wäre die Karte eine geeignete Struktur, die diese Daten enthalten.Wenn stattdessen die Definitionen nicht eindeutig, wäre eine Multimap den Container der Wahl.
Multiset ordnet die Sequenz, die steuert, durch Aufrufen einer gespeicherten Funktionsobjekt vom Typ Compare.Dieses gespeicherte Objekt ist eine Vergleichsfunktion, auf die zugegriffen werden kann, durch Aufrufen der Memberfunktion Key_comp.Im Allgemeinen müssen die Elemente lediglich weniger als vergleichbare herstellen dieser Bestellung werden: Damit zwei Elemente angegeben wird, kann bestimmt, dass sie (im Sinne, die weder kleiner als der andere ist) äquivalent sind, oder dass eine kleiner als die andere.Dies führt eine Sortierung zwischen den nonequivalent Elementen.Für eine weitere technische Anmerkung ist die Vergleichsfunktion ein binäres Prädikat, das eine strikte schwache im mathematischen Sinn standard Reihenfolge bedingt.Ein binäres Prädikat f(x,y) ist eine Funktionsobjekt, das zwei-Argument Objekte x und y und einen Rückgabewert von true oder false.Eine Sortierung auf die eine Gruppe ist eine strikte schwache bestellen, wenn das binäre Prädikat irreflexive, antisymmetrische und transitiv und wenn Gleichwertigkeit transitiv ist, wo zwei Objekte X und y äquivalent sein definiert sind beide f(X, y) und f(y, X) sind falsch.Wenn die stärkere Bedingung der Gleichstellung von Schlüsseln, die der Gleichwertigkeit ersetzt, gesamt (in dem Sinne, die alle Elemente in Bezug auf bestellt werden) wird die Reihenfolge, und die Schlüssel verglichen werden von einander unverständlich.
Konstruktoren
Erstellt ein multiset also leer oder d. h. eine Kopie aller oder Teil eines angegebenen multiset. |
Typedefs
Ein Typedef für die allocator Klasse für die multiset Objekt. |
|
Ein Typedef für einen bidirektionalen Iterator, das Lesen kann ein const Element in der multiset. |
|
Ein Typedef für einen Zeiger auf eine const -Element in einem multiset. |
|
Ein Typedef für einen Verweis auf ein const Element gespeichert wird, einem multiset zum Lesen und ausführen const Operationen. |
|
Ein Typedef für einen bidirektionalen Iterator, die jeder lesen kann const Element in der multiset. |
|
Eine Ganzzahl mit Vorzeichen Typedef für die Anzahl der Elemente von einer multiset in einem Bereich zwischen den Elementen auf Iteratoren. |
|
Ein Typedef für einen bidirektionalen Iterator, der lesen oder ändern ein Element in einem multiset. |
|
Ein Typedef für eine Funktionsobjekt, das Vergleichen von zwei Schlüsseln bestimmen die relative Reihenfolge von zwei Elementen in kann die multiset. |
|
Ein Typedef für eine Funktionsobjekt, das zwei Sortierschlüssel, um die relative Reihenfolge von zwei Elementen in bestimmen vergleichen kann die multiset. |
|
Ein Typedef für einen Zeiger auf ein Element in einem multiset. |
|
Ein Typedef für einen Verweis auf ein Element gespeichert werden, einem multiset. |
|
Ein Typedef für einen bidirektionalen Iterator, der lesen oder ändern ein Elements in eine umgekehrte multiset. |
|
Eine Ganzzahl ohne Vorzeichen, die die Anzahl der Elemente in darstellen, kann ein multiset. |
|
Der Typedef für eine Funktionsobjekt, das zwei Elemente als Sortierschlüssel, um ihre relative Reihenfolge in bestimmen vergleichen kann die multiset. |
|
Eine Typedef, die ein Objekt als ein Element als gespeichert beschreibt eine multiset in seiner Eigenschaft als Wert. |
Methoden
Gibt einen Iterator, auf das erste Element in verweist, der multiset. |
|
Löscht alle Elemente einer multiset. |
|
Gibt die Anzahl der Elemente in einer multiset , dessen Schlüssel als Parameter angegebenen Schlüssel übereinstimmt. |
|
Testet, ob ein multiset ist leer. |
|
Gibt einen Iterator, auf die Position hinter dem letzten Element in verweist, einer multiset. |
|
Gibt ein Paar von Iteratoren zurück.Der erste Iterator im Paar verweist auf das erste Element in einem multiset mit einem Schlüssel, der größer als ein angegebener Schlüssel ist.Der zweite Iterator im Paar verweist auf das erste Element in der multiset mit einem Schlüssel, der gleich oder größer als der Schlüssel. |
|
Entfernt ein Element oder einen Bereich von Elementen in einem multiset aus angegebenen Positionen oder entfernt Elemente, die einen angegebenen Schlüssel entsprechen. |
|
Gibt einen Iterator, auf die erste Position eines Elements in verweist, einem multiset , die einen Schlüssel gleich einem angegebenen Schlüssel hat. |
|
Gibt eine Kopie der allocator Objekt, das zum Erstellen der multiset. |
|
Fügt ein Element oder einen Bereich von Elementen in einem multiset. |
|
Stellt eine Funktionsobjekt, das zwei Sortierschlüssel, um die relative Reihenfolge von zwei Elementen in bestimmen vergleichen kann die multiset. |
|
Gibt einen Iterator das erste Element in einem multiset mit einem Schlüssel, der gleich oder größer als ein angegebener Schlüssel ist. |
|
Gibt die maximale Länge der multiset. |
|
Gibt einen Iterator, auf das erste Element in eine umgekehrte verweist multiset. |
|
Gibt einen Iterator, auf den Speicherort verweist, das letzte Element in eine umgekehrte multiset. |
|
Gibt die Anzahl der Elemente in einer multiset. |
|
Tauscht die Elemente von zwei multisets. |
|
Gibt einen Iterator das erste Element in einem multiset mit einem Schlüssel, der größer als ein angegebener Schlüssel ist. |
|
Ruft eine Kopie des Objekts Vergleich Reihenfolge Element Werten, in denen ein multiset. |
Anforderungen
Header: <set>
Namespace: std
Siehe auch
Referenz
Threadsicherheit in der C++-Standardbibliothek