Wie oben geschildert, wird die Transformation nun auf das Paar [key, value] angewandt. Entsprechend funktioniert der in Listing A gezeigte Code.
Meistens ist diese Vorgehensweise jedoch zu umständlich. Zur Vereinfachung ist in Tabelle B ein Format-String dargestellt, der die Position von key und value festlegt. Beachten Sie, dass %k den Schlüssel und %v den Wert angibt.
std::cout << coll_container( collWords, formatter( coll_transform( „%k -> %v“), „n“)); will write: collections -> 12 |
std::cout << coll_container( collWords, formatter( coll_transform( „Key: %k, Value: %v“), „n“)); will write: Key: collections, Value: 12 |
std::cout << coll_container( collWords, formatter( coll_transform( „[%k] -> [%v]“), „n“)); will write: [collections] -> 12 |
std::cout << coll_container( collWords, formatter( coll_transform( „Word ‚%k‘ appeared %v time(s).“), „n“)); will write: Word ‚collections‘ appeared 12 time(s) |
Tabelle B: Beispiele für Codes und ihren Output
Als ein weiterer Pluspunkt muss man nicht sowohl key als auch value schreiben, wie folgender Ausschnitt zeigt:
// will write only the keys std::cout << coll_container( collWords, formatter ( coll_transform( "%k"))); // will write only the values std::cout << coll_container( collWords, formatter ( coll_transform( "%v")));
Die Funktion coll_transform kann wie folgt verwendet werden:
- coll_transform( strFormat) wendet die Transformation strFormat auf jedes Paar [key, value] in der Collection an.
- coll_transform( strFormat, transformer) wendet die Transformation strFormat auf jedes Paar [key, value] in der Collection an. Der Transformer wird vor dem Schreiben von string/key/value angewandt. Ein Beispiel für einen Transformer ist die Klasse KeyToUpper, die wir in Kürze vorstellen werden.
Neueste Kommentare
Noch keine Kommentare zu C++: Collections und Collection-Bereiche
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.