C++: Collections und Collection-Bereiche

Was Sie beachten sollten

Beachten Sie, dass bei Sequence Containern die Transformation eine Umwandlung von Elementen vor ihrem Schreiben erlaubt. Zum Beispiel möchte man vielleicht, dass in einem Namens-Array die Namen wie folgt angezeigt werden: KEITH, Jones (Vorname in Großbuchstaben, Nachname in Normalschrift). Das Gleiche gilt auch hier. Der Transformer ermöglicht dieses Vorgehen, wobei in der Klasse des Objekts die folgenden Funktionen implementiert sein müssen:

  • write_prefix( streamOut, std::pair< const Key, Value>) schreibt ein Präfix, bevor der diesem Element entsprechende String geschrieben wird. Das zweite Argument wird bereitgestellt, wenn das Präfix auf Basis des Elements verarbeitet werden soll.
  • transform_value( streamOut, Value) wandelt den Wert um und schreibt ihn.
  • transform_key( streamOut, Key) wandelt den Schlüssel um und schreibt ihn.

Der Default-Transformer wird coll_transformation_base genannt. Er schreibt keine Präfixe (write_prefix bleibt leer) und schreibt den Schlüssel und den Wert ohne Änderungen. Wenn man dies optimieren möchte, muss man die entsprechende Klasse von coll_transformation_base ableiten und die benötigten Funktionen überschreiben.

So wird zum Beispiel der Schlüssel in Großbuchstaben geschrieben:


// writes the Key (which MUST be a string)
// in upper case
class KeyToUpper
: public coll_transformation_base
{
public:
template< class StreamType, class CharType>
void transform_key( StreamType & streamOut,
const std::basic_string< CharType> & key)
{
std::basic_string< CharType> upper = key;
std::transform(
upper.begin(), upper.end(), upper.begin(), toupper);
streamOut << upper;
}
};

Listing B zeigt die Möglichkeiten einer Kombination der Transformation (Format-String und Transformer) mit dem Writer. Die Kommentare stellen den Output des jeweiligen Codes dar.

Hier die Punkte, die beim Schreiben von Collections zu beachten sind:

  • Verwenden Sie coll_range/coll_container anstelle von range/container.
  • Wenn Sie einen Formatter verwenden, benutzen Sie coll_transform als dessen ersten Parameter. Einzige Ausnahme: Das Schreiben von Vorgängen wie der Klasse write_key_and_value, wie in Listing A dargestellt.
  • Wenn Sie coll_transform verwenden, ist der erste Parameter der Format-String. Sie können einen Transformer als zweiten Parameter bereitstellen, der string/key/value vor dem Schreiben umwandelt.
  • Der Format-String muss nicht unbedingt sowohl einen Schlüssel (%k) als auch einen Wert (%v) enthalten. Beispielsweise schreibt Key: %k nur die Schlüssel, jeweils mit dem Präfix Key, und %v schreibt nur die Werte.

Probieren Sie es aus

Sie können hier den Code für das Schreiben von Bereichen, Containern, Collectionbereichen bzw. Collections sowie ein Beispiel herunterladen. Führen Sie das Beispiel an einem Argument aus, einer zu lesenden Text-Datei. Es wird gezählt, wie häufig jedes einzelne Wort in der Datei vorkommt, wobei das Ergebnis in der Konsole angezeigt wird.

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

SEO-Beratung von Spezialisten wie WOXOW: Deshalb wird sie immer wichtiger

Wer bei Google mit den passenden Suchbegriffen nicht in den Top-Rankings gefunden wird, der kann…

1 Woche ago

Umfrage: Weniger als die Hälfte der digitalen Initiativen sind erfolgreich

Unternehmen räumen der Entwicklung technischer und digitaler Führungskompetenzen ein zu geringe Priorität ein. Gartner fordert…

1 Woche ago

Google schließt zwei Zero-Day-Lücken in Android

Betroffen sind Android 12, 13, 14 und 15. Google sind zielgerichtete Angriffe auf die beiden…

1 Woche ago

Gefährliche Weiterentwicklung der APT36-Malware ElizaRAT

Schadprogramm der pakistanischen Hackergruppe APT36 weitet seine Aktivitäten aus und verbessert seine Techniken.

1 Woche ago

Google schließt weitere schwerwiegende Sicherheitslücken in Chrome 130

Tenable vergibt für beide Schwachstellen einen CVSS-Basis-Score von 9,8. Zwei Use-after-free-Bugs erlauben möglicherweise das Einschleusen…

1 Woche ago

Microsoft nennt weitere Details zu kostenpflichtigen Patches für Windows 10

Erstmals liegen Preise für Verbraucher vor. Sie zahlen weniger als Geschäftskunden. Dafür beschränkt Microsoft den…

1 Woche ago