Ich bin mir bewusst, dass Map nicht vorbereitet ist, sortiert zu werden, stark für den schnellen und zufälligen Schlüsselzugriff optimiert., Und unterstützt tatsächlich nicht std :: sort.Sortierung einer Std :: Map nach Wert vor Ausgabe & Destroy
Mein aktuelles Problem ist, dass ich ein volles
map<std::string,int>
, die ich nicht mehr verwenden würde, ich brauche nur 10 Paare in Wert (int), um zu extrahieren und sie zerstören.
Das Beste wäre, wenn es möglich wäre, es an Ort und Stelle zu sortieren und dann 10 Mal iterieren, aber das ist anscheinend keine Lösung.
Ich versuche verschiedene Lösungen wie durch eine Multimap (um doppelte Schlüssel zu ermöglichen), aber ich würde gerne wissen, ob es eine elegantere Lösung gibt, mit stl-Algorithmen so viel wie möglich.
EDIT:
ich eine Karte bin mit, weil für das 99% der Zeit, die ich als eine Karte benötigen, schnell Schlüssel-Lookups Werte zu erhöhen. Brauche einfach einen guten Weg, um später in Wertordnung zu extrahieren, wenn ich die Map nicht mehr benötige.
Aktueller Ansatz whould sein:
- std :: kopieren Sie die Karte (std :: string, int) auf einen Vektor (Paar (std :: string, int))
- Art der Vektor
- erhalten die ersten 10 Werte
- Vektor zerstören und
Ihre Anforderungen sind mir sehr unklar. IIUC, müssen Sie 10 Einträge in der Karte _von ihrem Wert_ statt ihres Schlüssels finden? Und wenn du sie hast, was wirst du mit ihnen machen? Ich frage, weil "zerstören" ein vager Begriff ist und ich die Bedeutung für ein 'std :: pair' nicht erraten kann. Sollen sie von der Karte entfernt werden? (Wahrscheinlich nicht, da Sie sagten, dass Sie die Karte nicht mehr brauchen. Aber was noch?) –
sbi
Die Karte wird zerstört werden, so dass es mir egal ist, was damit später passiert, müssen nur diese 10 Werte haben –