Контейнеры STL: Multimap. Teil 8

Контейнеры STL: Multimap. Teil 8
Bewerten Sie diesen Artikel




класс multimap C ++, контейнеры STL, multimap für AnfängerWir haben ein einfaches Beispiel für die Verwendung der Karte betrachtet<> das Auftreten von einzelnen Zeichen im Text zu zählen. Zu diesem Zweck haben wir den Behälter Karte<>. Aber die Bibliothek STL bietet uns und andere (schließen) Behältertyp - es Multimap<>, das ermöglicht die Anwesenheit von viele Element (Paar<>) in seiner Zusammensetzung dem die gleiche Schlüsselwerte.

natürlich, dass die Grundregeln für die Bedienung Multimap<> Veränderung (im Vergleich zu Karte<>). Für ein solcher Behälter würden folgende Unterschiede im Verhalten sein:

  • Es enthält geordnete Paare <Schlüssel,Bedeutung>, wo der Schlüssel und der Wert kann auf beliebige Arten gehören;

  • Elemente mit allen möglichen Schlüsselwerte müssen nicht sein einzigartigmir, in der geordneten Sequenz von Elementen, (von Schlüssel) solche äquivalente Elemente sind, wie unterschiedlich Elemente, und sie werden einer nach dem anderen angeordnet,;

  • Da die Tasten sind die gleichen, Der Betrieb eines neuen Paares Tabelle um (Verfahren einfügen()) immer erfolgreich. Keine Notwendigkeit, das Ergebnis einer solchen Operation zurückzukehren: Rückgabewert - Leere;

  • Da es nun in dem Behälter kann eine Menge Elemente mit gleichen Schlüsseln sein, die eingeführte zusätzliche Methode Graf(). Er erhält den Wert des Schlüsselparameters, gibt die Anzahl der Vorkommen von, einen Schlüssel, Behälter;

  • Entfernungsvorgang (Verfahren löschen()) Anzeigeelement der Schlüssel Löschungen zu entfernen auf einmal Elemente mit dem gleichen Schlüssel;

Mal sehen, wie Multimap<> Bewältigung der vorherigen Übung. Hier sind die Textdateien für das Testprogramm:

30 Bruder und Schwester 11 Humpty Dumpty 34 Jabberwock

Wie im vorherigen Beispiel, Es ist etwas umständlich Eingangssymbole aus dem Strom verwendet, mit dem Text in mehreren Zeilen. Dies ist, dass und). Ich möchte lesen und auch Leerzeichen als Symbole, und nicht als Trennzeichen und b). Sie könnten nur die Reihe von Symbolen lesen Gin außer Newline gefolgt. Aber in der dargestellten Ausführungsform wäre es wünschenswert, die Unabhängigkeit des Betriebssystems zu erhalten (unterscheiden die so genannte DOS und UNIX Zeilenvorschub). Der Rest des Codes ist viel kürzer und einfacher geworden.

das Ergebnis, dass wir bekamen, wird nachstehend gezeigt (nächste wiederholt die gleiche Aktion vergleichen, durchgeführt Karte<>):

класс multimap C ++, контейнеры STL, multimap für Anfänger
Multimap
класс Karte c ++, контейнеры STL, Karte für Anfänger
Karte

Wir weisen darauf hin, dass, wie die Entfernung eines einzigen Bedienungs alphabet.erase( 'ein’ ) wir gelöscht aus den Tabellen 38 Element, definierbare Tasten 'ein’. Wo hat die Größe der Größe() in 696 Element?




класс multimap C ++, контейнеры STL, multimap für Anfänger

(Show Form wc Befehl berechnet das Linux-Betriebssystem die Anzahl der Zeilen in der Datei. Die LS-Befehlsausgänge Länge Datei, dh. die Anzahl der einzelnen Bytes, Zeichen in einer Datei. In Windows können Sie versuchen, ein ähnliches Ergebnis mit dem Befehl dir zu erreichen.)

Wenn wir aus der Gesamtzahl der Zeichen sind (Länge in Bytes) subtrahieren, um die Anzahl der Reihen (Zeilenumbrüche) in der Datei, wir erhalten diese Zahl: 726 – 30 = 696. Auf diese Weise, für jedes Eingangssymbol erzeugt wurde getrennt Tischelement, beispielsweise, mit dem Schlüssel ‚s’ es war 39 solche Elemente.

alle, zuvor gesagt über контейнера Karte<> (außer Räumlichkeiten Algorithmus und Probe) voll gilt für Multimap<>, beispielsweise, Vergleichbarkeitserfordernis und der Schlüssel, wie zu definieren oder neu definieren, die Vergleichsoperation.

Newsletter neue Lektionen über die Programmierung:

Öl

Etwa Öl

praktische Erfahrungen über die Softwareentwicklung 40 Jahre. Lehrer Globale Logik internationales Softwareunternehmen. IBM Developer Works Permanent Autor von Publikationen. Wissenschaftliche Herausgeber der Computerliteratur-Verlag "Symbol-Plus", Sankt Petersburg.

Hinterlasse eine Antwort

Platz Code in Tags: <pre class="lang:c ++ dekodieren:true ">DEIN CODE</Vor>