c++, stl, carte comment trier en valeur, pas touche
Je veux trier les éléments dans la carte conteneur en utilisant uniquement les valeurs pas de clé. comment faire? Je sais que la carte peut trier par valeur de la clé, mais comment faire, vice-versa. J'ai trouvé la même question dans stackoverfrlow. J'aime cette solution. Cependant, je veux clarifier ce que signifie le "vidage de l' pair<K,V>
". Je ne veux pas créer de structure particulière pour cela, il n'est pas très élégant. comment avez-vous implémente cette solution?
le but de la carte est de trier par la clé... vous ne pouvez pas trier les deux en même temps... (je n'ai pas downvote 🙂 )
Je downvoted à votre question parce qu'il n'est pas clair quel est le problème. Qu'est-ce que "pas élégant"? La question liée à la a trois les réponses avec trois solutions alternatives.
Vous avez besoin d'expliquer davantage la pièces de le lien qui prêtent à confusion ou ne s'applique pas à votre situation.
La question est lié à explique exactement comment faire ce que vous demandez. Si il y a quelque chose que vous ne comprenez pas, posez une question spécifique à propos de cette partie.
Vous devriez regarder les boost::bimap
Je downvoted à votre question parce qu'il n'est pas clair quel est le problème. Qu'est-ce que "pas élégant"? La question liée à la a trois les réponses avec trois solutions alternatives.
Vous avez besoin d'expliquer davantage la pièces de le lien qui prêtent à confusion ou ne s'applique pas à votre situation.
La question est lié à explique exactement comment faire ce que vous demandez. Si il y a quelque chose que vous ne comprenez pas, posez une question spécifique à propos de cette partie.
Vous devriez regarder les boost::bimap
OriginalL'auteur ashim | 2011-12-27
Vous devez vous connecter pour publier un commentaire.
Pour le vidage de l'information à partir d'un std::map dans un std::vector, vous pouvez utiliser std::vector du constructeur qui prend deux itérateurs.
Vous ensuite de les trier avec:
myFunction
serait une fonction définie à la signature:L'ai retourner vrai si elles sont dans le bon ordre(c'est à dire d'abord avant de seconde). Return false quand ils sont dans le mauvais ordre(c'est à dire la deuxième devrait être avant la première).
Aussi, vous voudrez peut-être regarder à boost::bimap, qui semble plus à l'écoute de votre problème.
mais, à chaque fois que le changement de carte, vous devez refaire les mêmes opérations avec le vecteur de faire le tri avec son contenu !
eharvest: Oui, il a sans doute secrètement veut un boost::bimap.
"secrètement" 😀 lol
OriginalL'auteur Lalaland