Sortierung in std::map, wo der Schlüssel ist ein std::string
Habe ich eine std::map mymap
Nun, wenn ich einfügen-Werte in der map wie:
std::map <string, string> mymap;
mymap["first"] = "hi";
mymap["third"] = "how r you";
mymap["second"] = "hello";
Will ich jetzt Durchlaufen Sie die Karte und drucken Sie den Wert in sortierter(Schlüssel) Art:
map<string, string>::iterator itr;
for(itr = mymap.begin(); itr != mymap.end(); itr++)
{
string newline = itr->second;
cout << newline << endl;
}
Ausgabe sollte sein:
hi
hello
how r you
Dachte ich, dass standardmäßig Karte Filialen in sortierten Schlüssel Weise, aber ich bin immer in der gleichen Reihenfolge in der Ausgabe als ich gebe im input. Muss ich meine Art Funktion für diese oder die Notwendigkeit, etwas extra zu tun, bevor die Iteration über die Karte?
InformationsquelleAutor der Frage Ruchi | 2011-12-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Elemente in
std::map
bestellt werden (standardmäßig) vonoperator<
angewendet, um den Schlüssel.Den code, den Sie geschrieben, mit kleinen änderungen, die für mich funktionieren, wie Sie erwartet:
Drucke:
InformationsquelleAutor der Antwort hmjd
Den
map
ist eigentlich ein Baumund ist sortiert nach der Reihenfolge der SCHLÜSSEL. Sie druckenitr->second
ist der WERT nicht das entscheidende. Wenn Sie möchten, dass Ihre Schlüssel/Wert-Paare sortiert nach dem WERT, den WERT als Schlüssel statt, oder speichern Sie alles in einem anderen container (z.B. einem array), dann Sortieren Sie Sie.InformationsquelleAutor der Antwort Giovanni Funchal
std::map ist bereits bestellt. Wenn Sie wurden mit unordered_map, jetzt müsstest du ein problem!!!
Einträge in std::map sind bestellt, der durch den Schlüssel, oder itr->erste. itr->zweite wie Sie es haben, bezieht sich auf den Wert mit der Taste verknüpft.
Weiter mehr, du bist nicht der Iteration über die Karte, die Sie Durchlaufen file_line (ich weiß nicht, was das ist, aber ich gehe davon aus, das es verschiedene mymap. Das ist, was Sie sein sollte iteriert).
InformationsquelleAutor der Antwort MGZero
Definiert der standard:
InformationsquelleAutor der Antwort Shawnone
Die Reihenfolge der Einträge in einer
map
im standard definiert (denke ich), also, wenn Sie wollen, es sortiert Sie es zu tun haben Ihr selbst. Zum Beispiel mit derSortieren
Funktion. Allerdings bin ich mir nicht sicher, ob es mitmap
. Wenn Sie wollen sicher sein, es ist sortiert, ich schlage vor, Sie kopieren Sie es in einvector
oder einelist
und Sortieren und der Ausgabe.InformationsquelleAutor der Antwort Some programmer dude