Erhalte eine Liste von Schlüsseln und Werten von unordered_map
Was ist die effizienteste Art der Gewinnung von Listen (als vector
) der Schlüssel und Werte aus einer unordered_map
?
Zur Gegenständlichkeit, nehmen wir an, die Karte in Frage, ist ein unordered_map<string, double>
.
Ich würde dann gerne erhalten die keys als vector<string>
, und die Werte als vector<double>
.
unordered_map<string, double> um;
vector<string> vs = um.enum_keys();
vector<double> vd = um.enum_values();
Kann ich nur die Iteration über die Karte und sammeln Sie das Ergebnis, aber es ist ein mehr
eine effiziente Methode? Es wäre schön, eine Methode, die funktioniert auch für den regulären anzeigen,
da könnte ich wechseln.
InformationsquelleAutor der Frage Faheem Mitha | 2011-12-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Okay, hier gehen Sie:
Effizienz kann wahrscheinlich verbessert werden, aber es ist so. Sie arbeiten auf zwei Behälter obwohl, so dass es nicht wirklich STL Magie zu verbergen, die Tatsache.
Als Louis sagte, diese Arbeit wird für jede der STL
map
oderset
Container.InformationsquelleAutor der Antwort Keith Layne
Mit C++-14 könnten Sie auch Folgendes tun (editiert enthalten vollständige Quelle):
Den ich kompiliert habe, dies mit dem folgenden Befehl:
Tests gedruckt werden die Schlüssel und Werte als erwartet.
InformationsquelleAutor der Antwort Marius Renn
In der STL es gibt keine integrierte Methode, um alle Schlüssel oder Werte aus einer Karte.
Es gibt keine andere Durchlaufen eine ungeordnete Karte oder den regulären anzeigen, ist der beste Weg zu Durchlaufen und sammeln Schlüssel oder Wert in einen Vektor.
Schreiben Sie eine template-Funktion zu Durchlaufen, jede Art von Karte.
InformationsquelleAutor der Antwort Louis
Beitritt zu spät, aber dachte, das könnte hilfreich sein, um jemanden.
Zwei template-Funktionen, so dass die Verwendung von
key_type
undmapped_type
.Verwendung:
InformationsquelleAutor der Antwort elimad