Dieser Code erzeugt einen Compile-Time-Fehler. Jedes Element in einer Collection ist ein std::pair< const Key, Value> (in diesem Fall std::pair< const std::string, int>). Es ist kein Operator<< für std::pair< Key, Value> definiert, daher der Fehler. Selbst wenn ein solcher definiert wäre, würde er für unsere Zwecke nicht ausreichen. Die Ausgabe würde vermutlich wie folgt aussehen:
'easily' -> 3 'write' -> 5 'collections' -> 12
Oder sogar so:
Word 'easily' appeared 3 time(s). Word 'write' appeared 5 time(s). Word 'collections' appeared 12 time(s).
Um den Unterschied zwischen dem Schreiben einer Collection und dem Schreiben eines Sequence Containers zu erkennen, genügt es, die Objekte für das Formatieren eines Bereichs bzw. Containers zu betrachten:
Für Collections lautet das Element std::pair< const Key, Value>. (Key ist dabei der Schlüssel der Collection und Value der Werttyp der Collection). Formatter und Writer können beibehalten werden, da das Formatter-/Writer-Verfahren für die Collections gleich ist. Allerdings muss die Transformation entscheiden, wie sie ein Paar aus Key und Value schreibt (im Gegensatz zu einem Wert allein bei Sequence Containern/Bereichen), da hier eine Abweichung gegenüber einem Sequence Container vorliegt.
Da die Transformation anders gehandhabt wird, ist auch die Default-Transformation anders. Statt den Wert zu schreiben, wie dies bei Sequence Containern und Bereichen geschieht, schreibt die Transformation die Elemente wie folgt: „<key> -> <value>“ – zum Beispiel „easily -> 3“. Das heißt, dass auch der Default-Formatter anders ist. (Er verwendet die Default-Transformation für Collections statt der für Sequence Container). Eigens für diesen Zweck habe ich die Funktionen coll_range und coll_container erstellt, die der Bereichs-/Container-Syntax ähneln.
Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…
Hinter 84 Prozent der Zwischenfälle bei Herstellern stecken Schwachstellen in der Lieferkette. Auf dem Vormarsch…
Es kommt angeblich 2028 auf den Markt. Das aufgeklappte Gerät soll die Displayfläche von zwei…
Das System basiert auf Hardware von HPE-Cray und Nvidia. Die Inbetriebnahme erfolgt 2027.
Die Bundesnetzagentur hat ihr Gigabit-Grundbuch aktualisiert. Drei von vier Haushalten sollen jetzt Zugang zu Breitbandanschlüssen…
Mit dem Internet verbundene Digitale Bilderrahmen oder Mediaplayer können mit Schadsoftware infiziert werden und sind…