Je suis conscient que la carte n'est pas prête à être triée, qu'elle est fortement optimisée pour l'accès rapide et aléatoire aux clés, et qu'elle ne prend pas en charge std :: sort.Tri d'un fichier std :: map avant valeur et destruction
Mon problème actuel est que j'ai un plein
map<std::string,int>
que je ne vais plus utiliser, je juste besoin d'extraire 10 paires en valeur (int) l'ordre et le détruire. La meilleure chose, si c'était possible, serait de le trier et de l'itérer 10 fois, mais ce n'est apparemment pas une solution. J'essaie différentes solutions en passant par un multimap (pour permettre les clés en double) mais j'aimerais savoir s'il existe une solution plus élégante, en utilisant autant que possible les algorithmes stl.
EDIT:
J'utilise une carte parce que pour 99% du temps, je besoin comme une carte, recherche de clé rapide pour augmenter les valeurs. Juste besoin d'un bon moyen d'extraire plus tard dans l'ordre des valeurs quand je n'ai plus besoin de la carte.
approche actuelle whould être:
- std :: copier la carte (std :: string, int) à un vecteur (paire (std :: string, int))
- sorte le vecteur
- obtenir les 10 premières valeurs
- vecteur et carte détruisent
Vos exigences ne sont pas claires pour moi. IIUC, vous avez besoin de trouver 10 entrées sur la carte par leur value_ au lieu de leur clé? Et une fois que vous les avez, qu'allez-vous faire avec eux? Je demande parce que "détruire" est un terme vague et je ne peux pas deviner la signification d'un 'std :: pair'. Doivent-ils être retirés de la carte? (Probablement pas, puisque vous avez dit que vous n'avez plus besoin de la carte, mais quoi d'autre?) –
sbi
La carte va être détruite, donc je me fiche de ce qui se passera plus tard, il suffit d'avoir ces 10 valeurs –