Wie kann ich den Inhalt der einen Karte auf der Konsole?
Ich habe eine map
wie folgt deklariert:
map < string , list < string > > mapex ; list< string > li;
Wie kann ich die Anzeige der gespeicherten Elemente in der obigen Karte auf die Konsole?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nun, es hängt davon ab, wie Sie möchten, um Sie anzuzeigen, aber Sie können immer iterieren Sie einfach:
Update (Zurück in die Zukunft): mit C++11-range-basierte for-Schleifen –
Ich würde versuchen, die folgenden
expected unqualified-id before '<' token
auf die erste Zeile:void dump_list(const std::list<string>& l) {
. Muss ich etwas?Ich bin ein wenig off-topic hier...
Ich denke, Sie wollen, dump den Inhalt der Karte für die Fehlersuche. Ich mag zu erwähnen, dass die nächste gdb version (version 7.0) haben einen eingebauten python-interpreter, der verwendet wird von der gcc libstdc++ zu bieten stl ziemlich Druckern. Hier ist ein Beispiel für Ihren Fall
die Ergebnisse in
Yay!
Einer anderen form, mit
<algorithm>
:Test-Programm:
Schreiben Sie eine ziemlich generische überladene Funktion, die gut für zwei Zwecke:
map
.<<
.Die Funktion ist
cout <<
funktioniert mit jedemmap
für die<<
definiert ist, für dietypename
skey_t
undvalue_t
. In Ihrem Fall ist dies nicht definiert fürvalue_t
(=list<string>
), so dass Sie auch haben, Sie zu definieren.In einem ähnlichen Geist, die Sie verwenden können,
So können Sie:
using namespace std;
(oder hinzufügenstd::
als nötig).cout << mapex << endl;
cout << li << endl;
Denken Sie daran, dass, wenn es irgendeine andere brauchbare Kandidat für die
<<
s gerade definiert haben (die ich nehmen gibt es nicht, sonst würden Sie wahrscheinlich nicht diese Frage stellen), kann es Vorrang vor den Anwesenden.Wenn Sie verwenden können, C++11 Funktionen, dann denke ich,range-basierte for-Schleifen, wie vorgeschlagen, Die Paramagnetischen Croissant Antwort bieten die meisten lesbare option. Allerdings, wenn C++17 für Sie verfügbar ist, dann kombinieren Sie diese Schleifen mit strukturierte Bindungen weiter zu erhöhen die Lesbarkeit, da Sie nicht mehr verwenden, die
first
undsecond
Mitglieder. Für Ihren speziellen Anwendungsfall, meine Lösung würde wie folgt Aussehen:Ausgabe:
Code auf Coliru