Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tableau de scores et noms

Trier

Sujet résolu
    2 janvier 2008 à 13:18:43

    Bonjour,

    J'ai une list de scores contenue dans un vector :

    1. vector<string> scores;


    Je veux afficher le tableau des scores, et pour ça je trie le tout en faisant :

    1. sort(scores.begin(), scores.end());


    Mais le problème arrive :

    J'ai aussi une liste de noms (vector<string> noms;) : Quand je ne trie pas les scores, tout marche parfaitement car noms est lié à scores. Par exemple ça donne ça :

    J1                 594
    J2                 1028
    J3                 13
    J4                 347
    J5                 946


    Et là c'est bon (sauf pas trié), car en fait j'ai codé pour que scores[0] corresponde à noms[0], scores[1] à noms[1]... etc.

    Mais quand je trie les scores, ça donne ça :

    J1                 1028
    J2                 946
    J3                 594
    J4                 347
    J5                 13


    Mais les noms ne bougent pas; logique je n'ai rien touché pour les noms. Je voudrais donc que les noms soient "liés" aux scores, si vous voyez le truc ?

    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
      2 janvier 2008 à 13:53:26

      Tu peus voir du côter de std::map, il utilise un template pour acceder a une case.
      Du coup tu peut acceder a un int en donnant un std::string.

      De cette manière :

      1. std::map<std::string, int> map;
      2. // Ensuite tu utilise les std::string pour parcourir les cases et acceder aux int.


      Le sort devrait fonctionner de la même manière.
      Ensuite pour l'affichage tu fais :
      1. std::cout << nom << map[nom] << std::endl;


      Avec cette méthode ce sont tes int qui sont liés a tes nom.
      • Partager sur Facebook
      • Partager sur Twitter
        2 janvier 2008 à 13:56:48

        Ne fais qu'un seul tableau de couples {nom, score}.
        Ensuite trie avec un foncteur qui va bien.
        • Partager sur Facebook
        • Partager sur Twitter
        C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
          2 janvier 2008 à 14:49:00

          Bonjour !

          Je ne vois pas l'utilité d'une map ici mais bon.. (une pair suffit !)
          Va faire un petit tour par ici :
          http://r0d.developpez.com/articles/algos-stl/
          Ca devrait t'aider à comprendre comment utiliser les foncteurs avec les algorithmes de la STL.
          • Partager sur Facebook
          • Partager sur Twitter
          Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
            2 janvier 2008 à 17:07:09

            Il "suffit" en effet de faire une paire (structure,...) et de surcherger l'opérateur < pour avoir accés aux algos de tris de la STL.
            • Partager sur Facebook
            • Partager sur Twitter
            Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
              2 janvier 2008 à 17:29:49

              Je vais donc aller voir de plus près pair et les foncteurs.

              Si je coince quelque part, je reviendrai :p

              Merci en tout cas.
              • Partager sur Facebook
              • Partager sur Twitter
                2 janvier 2008 à 18:24:10

                Ah ben décidement j'en apprend tout les jours, je ne connaissais pas std::pair, autant pour moi...
                • Partager sur Facebook
                • Partager sur Twitter

                Tableau de scores et noms

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown